如今你手中有一臺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} }
感謝園友的幫助!