執行遠端命令

您可以使用單一 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 包含:

一般而言,不需特殊設定即可支援遠端功能的 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

另請參閱