執行遠端命令
您可以使用單一 PowerShell 命令,在一或數百部電腦上執行命令。 Windows PowerShell 支援使用各種技術進行遠端運算,包括 WMI、RPC 和 WS-Management。
PowerShell 支援 WMI、WS-Management 和 SSH 遠端處理。 在 PowerShell 7 和更新版本中,只有在 Windows 上才支援 RPC。
如需 PowerShell 中遠端處理的詳細資訊,請參閱下列文章:
不需設定的 Windows PowerShell 遠端功能
許多 Windows PowerShell Cmdlet 都有 ComputerName 參數,可讓您收集資料,並變更一或多部遠端電腦的設定。 這些 Cmdlet 會使用不同的通訊協定,並在所有 Windows 作業系統上運作,而不需要任何特殊設定。
這些 Cmdlet 包含:
- Restart-Computer
- Test-Connection
- Clear-EventLog
- Get-EventLog
- Get-HotFix
- Get-Process
- Get-Service
- Set-Service
- Get-WinEvent
- Get-WmiObject
一般而言,不需特殊設定即可支援遠端功能的 Cmdlet 具有 ComputerName 參數,而且沒有 Session 參數。 若要在您的工作階段中尋找這些 Cmdlet,請輸入:
Get-Command | Where-Object {
$_.Parameters.Keys -contains "ComputerName" -and
$_.Parameters.Keys -notcontains "Session"
}
Windows PowerShell 遠端執行功能
使用 WS 管理通訊協定,Windows PowerShell 遠端可讓您在一或多部遠端電腦上執行任何 Windows PowerShell 命令。 您可以建立持續性連線、啟動互動式會話,以及在遠端電腦上執行腳本。
若要使用 Windows PowerShell 遠端功能,遠端電腦必須設定為遠端管理。 如需詳細資訊,包括指示,請參閱 關於遠端需求。
設定 Windows PowerShell 遠端處理之後,即可使用許多遠端策略。 本文僅列出其中一些。 如需詳細資訊,請參閱 關於遠端。
啟動互動式會話
若要使用單一遠端電腦啟動互動式會話,請使用 Enter-PSSession Cmdlet。 例如,若要使用 Server01 遠端電腦啟動互動式工作階段,請輸入:
Enter-PSSession Server01
命令提示字元會變更以顯示遠端電腦的名稱。 您在遠端電腦上執行提示時輸入的任何命令,結果會顯示在本機計算機上。
若要結束互動式工作階段,請輸入:
Exit-PSSession
如需 和 Exit-PSSession
Cmdlet 的詳細資訊Enter-PSSession
,請參閱:
執行遠端命令
若要在一或多部計算機上執行命令,請使用 Invoke-Command Cmdlet。 例如,若要在 Server01 和 Server02 遠端電腦上執行 Get-UICulture 命令,請輸入:
Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {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
執行腳本
若要在一或多部遠端電腦上執行腳本,請使用 Cmdlet 的 Invoke-Command
FilePath 參數。 腳本必須位於本機計算機上或可存取。 結果會傳回至本機計算機。
例如,下列命令會在遠端計算機上、Server01 和 Server02 上執行 DiskCollect.ps1
腳本。
Invoke-Command -ComputerName Server01, Server02 -FilePath c:\Scripts\DiskCollect.ps1
建立持續性 連線
New-PSSession
使用 Cmdlet 在遠端電腦上建立持續性工作階段。 下列範例會在 Server01 和 Server02 上建立遠端會話。 會話物件會儲存在變數中 $s
。
$s = New-PSSession -ComputerName Server01, Server02
現在,工作階段已建立,您可以在其中執行任何命令。 因為工作階段是持續性,您可以從單一命令收集資料,並將它用於後續的命令。
例如,下列命令會在變數的會話中執行Get-HotFix
命令,並將結果儲存在變數中$h
。$s
$h
變數是在 $s
的每個工作階段中所建立,但在本機工作階段中不存在。
Invoke-Command -Session $s {$h = Get-HotFix}
現在,您可以將 變數中的數據 $h
與相同會話中的其他命令搭配使用。 結果會顯示在本機電腦上。 例如:
Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NT AUTHORITY\SYSTEM"}}
進階遠端處理
PowerShell 包含可讓您:
- 從本機和遠端端設定及建立遠端會話
- 建立自定義和受限制的會話
- 從實際在遠端會話上隱含執行的遠端會話匯入命令
- 設定遠端會話的安全性
Windows 上的 PowerShell 包含 WSMan 提供者。 提供者會建立磁碟 WSMAN:
驅動器,讓您瀏覽本機計算機和遠端電腦上的組態設定階層。
如需 WSMan 提供者的詳細資訊,請參閱 WSMan 提供者 和 關於 WS 管理 Cmdlet,或在 Windows PowerShell 控制台中輸入 Get-Help wsman
。
如需詳細資訊,請參閱
如需遠端錯誤的協助,請參閱 about_Remote_Troubleshooting。