您只需單一的 Windows PowerShell 命令,即可在一部或數百部的電腦上執行命令。Windows PowerShell 支援藉由 WMI、RPC 和 WS-Management 等數種技術進行遠端運算。
不使用設定的遠端運算
許多 Windows PowerShell Cmdlet 都具有 ComputerName 參數,可用來在一或多部遠端電腦上收集資料及變更設定。這些 Cmdlet 運用多種通訊技術,而且許多都可用於 Windows PowerShell 所支援的所有 Windows 作業系統,且不需任何特殊的設定。
這些 Cmdlet 包含:
- Restart-Computer
- Test-Connection
- Clear-EventLog
- Get-EventLog
- Get-HotFix
- Get-Process
- Get-Service
- Set-Service
- Get-HotFix
- Get-WmiObject
一般而言,Cmdlet 如果支援在沒有特殊設定的情況下進行遠端運算,則具有 ComputerName 參數,但沒有 Session 參數。若要在工作階段中尋找這些 Cmdlet,請輸入:
get-command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}
Windows PowerShell 遠端功能
使用 WS-Management 通訊協定的 Windows PowerShell 遠端功能,可用來在一或多部遠端電腦上執行任何 Windows PowerShell 命令。此功能讓您可以建立永久連線、啟動 1:1 的互動式工作階段,並在多部電腦上執行指令碼。
若要使用 Windows PowerShell 遠端功能,遠端電腦必須完成遠端管理的設定。如需詳細資訊 (包含操作指示),請參閱 about_Remote_Requirements。
在完成 Windows PowerShell 遠端功能的設定之後,您就可以開始使用許多遠端功能策略。在本文件的剩餘內容中,我們只會討論其中數種策略。如需詳細資訊,請參閱 about_Remote 和 about_Remote_FAQ。
啟動互動式工作階段
若要啟動與單一遠端電腦之間的互動式工作階段,請使用 Enter-PSSession Cmdlet。例如,若要以 Server01 遠端電腦啟動互動式工作階段,請輸入:
enter-pssession Server01
命令提示字元會變更,顯示您目前所連接的電腦名稱。之後,您在命令提示字元所輸入的任何命令都會在遠端電腦上執行,且執行結果會顯示在本機電腦上。
若要結束互動式工作階段,請輸入:
exit-pssession
如需 Enter-PSSession 和 Exit-PSSession Cmdlet 的詳細資訊,請參閱 Enter-PSSession 和 Exit-PSSession。
執行遠端命令
若要在一或多部遠端電腦上執行任何命令,請使用 Invoke-Command Cmdlet。例如,若要在 Server01 和 Server02 兩部遠端電腦上執行 Get-UICulture 命令,請輸入:
invoke-command -computername Server01, Server02 {get-UICulture}
輸出將傳回到您的電腦。
LCID Name DisplayName PSComputerName ---- ---- ----------- -------------- 1033 en-US English (United States) server01.corp.fabrikam.com 1033 en-US English (United States) server02.corp.fabrikam.com
如需 Invoke-Command Cmdlet 的詳細資訊,請參閱 Invoke-Command。
執行指令碼
若要在一或多部遠端電腦上執行指令碼,請使用 Invoke-Command Cmdlet 的 FilePath 參數。指令碼必須位於本機電腦或可從本機電腦存取。結果會傳回到本機電腦。
例如,下列命令會在 Server01 和 Server02 兩部遠端電腦上執行 DiskCollect.ps1 指令碼。
invoke-command -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1
如需 Invoke-Command Cmdlet 的詳細資訊,請參閱 Invoke-Command。
建立固定連線
若要執行共用資料的一系列相關命令,請在遠端電腦建立工作階段,然後使用 Invoke-Command Cmdlet 在您建立的工作階段中執行命令。若要建立遠端工作階段,請使用 New-PSSession Cmdlet。
例如,下列命令會在 Server01 電腦上建立遠端工作階段,然後在 Server02 電腦上建立另一個遠端工作階段,並將工作階段物件儲存在 $s 變數中。
$s = new-pssession -computername Server01, Server02
現在在建立工作階段之後,您就可在其中執行任何命令。由於工作階段是永久的,所以可以用一個命令收集資料,然後再將該資料用於後續的命令。
例如,下列命令在工作階段中執行 $s 變數中的 Get-Hotfix 命令,然後再將結果儲存在 $h 變數中。$s 中的每個工作階段都會建立 $h 變數,但此變數並不存在於本機工作階段中。
invoke-command -session $s {$h = get-hotfix}
現在您可以在後續命令中使用 $h 變數中的資料,如下列範例所示。結果會顯示在本機電腦上。
invoke-command -session $s {$h | where {$_.installedby -ne "NTAUTHORITY\SYSTEM"
進階遠端功能
Windows PowerShell 遠端管理的功能強大。透過隨附 Windows PowerShell 安裝的 Cmdlet,您從本機或遠端都可以建立及設定遠端工作階段,也可以建立自訂及限制的工作階段,使用者也能從遠端工作階段匯入實際在遠端工作階段中以隱含方式執行的命令,並且進行遠端工作階段的安全性設定等等作業。
Windows PowerShell 提供 WS-Management 提供者來協助遠端設定。您可藉由提供者建立的 WSMAN: 磁碟機,瀏覽本機電腦和遠端電腦的設定階層。如需 WS-Management 提供者的詳細資訊,請參閱 WSMan Provider 和 about_WS-Management_Cmdlets,或者也可以在 Windows PowerShell 主控台中輸入 "get-help wsman"。
如需詳細資訊,請參閱 about_Remote_FAQ、New-PSSessionConfiguration 和 Import-PSSession。如需遠端功能錯誤的說明,請參閱 about_Remote_Troubleshooting。
請參閱