zoukankan      html  css  js  c++  java
  • 通过Windows PowerShell远程管理计算机(精简版)

    现在你手中有一台server(主控端),你打算通过主控端远程管理多台server(被控端)。这个过程可以通过Windows PowerShell来完成。

    首先在被控端上以管理员权限打开PowerShell,输入以下命令(其中XXX是IP中的字段,TrustedHosts填写的是主控端的IP地址。):

    winrm s winrm/config/client '@{TrustedHosts="XXX.XXX.XXX.XXX"}'

    然后在主控端上以管理员权限打开PowerShell,输入以下命令(其中“XXX.XXX.XXX.XXX”为被控端的IP地址,“domainuserName”为被控端机器的登陆用户。):

    $session = New-PSSession XXX.XXX.XXX.XXX -Credential domainuserName

    输入完这条命令后按回车,会让你验证被控端登陆用户的密码,输入后按回车——Session创建成功。

    之后我们就可以通过$session变量来对远程计算机(被控端)进行操控了。

    例如:我们想要远程重启这台计算机,只需要在主控端的PowerShell窗口中继续输入:

    icm $session {cmd.exe /c shutdown /r /f /t 1}

    输入完毕按回车,这时被控端的机器就已经被重启了。

    我将上述主控端的过程进行了封装,封装后的方法为:

    function ShutDownRemoteComputers
    {
        param($ip,$userName)
        #winrm s winrm/config/client '@{TrustedHosts=10.1.23.60"}'
        $sen = "'@{TrustedHosts=`""+$ip+"`"}'"
        winrm s winrm/config/client $sen
        $session = New-PSSession $ip -Credential $userName
        icm $session {cmd.exe /c shutdown /r /f /t 1}
    }

    从此主控端操控被控端只需要如下语句:

    ShutDownRemoteComputers -ip XXX.XXX.XXX.XXX -userName domainuserName

    唯一比较麻烦的就是执行完上面的语句后,你需要对相应的“domainuserName”进行Password验证:

    对于有密码验证的情况,下面方法可以自动完成密码验证这一过程:

    function ShutDownRemoteComputers
    {
        param($ip,$user,$pwd)
        #winrm s winrm/config/client '@{TrustedHosts=10.1.23.60"}'
        $sen = "'@{TrustedHosts=`""+$ip+"`"}'"
        winrm s winrm/config/client $sen
        $pw = convertto-securestring -AsPlainText -Force -String $pwd
        $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $user,$pw
        $session = New-PSSession $ip -Credential $cred
        icm $session {shutdown -s -t 0}
    }

    感谢园友的帮助

  • 相关阅读:
    mac 安装ROS2
    193 最长有效括号
    个人笔记
    个人笔记
    个人笔记-大佬主页
    笔记-吴恩达老师机器学习及深度学习
    个人笔记
    转载-资源链接
    枚举类型
    333333333333333333333333
  • 原文地址:https://www.cnblogs.com/LanTianYou/p/4723914.html
Copyright © 2011-2022 走看看