经过Windows PowerShell远程管理计算机(精简版)

如今你手中有一台server(主控端),你打算经过主控端远程管理多台server(被控端)。这个过程能够经过Windows PowerShell来完成。session

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

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

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

$session = New-PSSession XXX.XXX.XXX.XXX -Credential domain\userName

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

以后咱们就能够经过$session变量来对远程计算机(被控端)进行操控了。rest

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

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

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

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

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}
}

今后主控端操控被控端只须要以下语句:ip

ShutDownRemoteComputers -ip XXX.XXX.XXX.XXX -userName domain\userName

惟一比较麻烦的就是执行完上面的语句后,你须要对相应的“domain\userName”进行Password验证:get

对于有密码验证的状况,下面方法能够自动完成密码验证这一过程:

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}
}

感谢园友的帮助

相关文章
相关标签/搜索