共用方式為


關於遠端

簡短描述

說明如何在 Windows PowerShell 中執行遠端命令。

詳細描述

您可以使用暫時或持續連線,在單一電腦或多部電腦上執行遠端命令。 您也可以啟動單一遠端電腦的互動式會話。

本主題提供一系列的範例,示範如何執行不同類型的遠端命令。 在您嘗試這些基本命令之後,請閱讀說明這些命令中所使用之每個 Cmdlet 的說明主題。 這些主題會提供詳細資料,並說明如何修改命令以符合您的需求。

注意:若要使用 Windows PowerShell 遠端執行功能,必須將本機和遠端電腦設定為進行遠端處理。 如需詳細資訊,請參閱about_Remote_Requirements

如何啟動互動式會話(輸入-PSSESSION)

執行遠端命令最簡單的方式,就是啟動與遠端電腦的互動式會話。

當會話啟動時,您輸入的命令會在遠端電腦上執行,就像您直接在遠端電腦上輸入一樣。 您只能連接到每個互動式會話中的一部電腦。

若要啟動互動式會話,請使用 Enter-PSSession Cmdlet。 下列命令會啟動 Server01 電腦的互動式會話:

Enter-PSSession Server01

命令提示字元會變更,以指出您已連線到 Server01 電腦。

Server01\PS>

現在,您可以在 Server01 電腦上輸入命令。

若要結束互動式工作階段,請輸入:

Exit-PSSession

如需詳細資訊,請參閱 Enter-PSSession。

如何使用具有 COMPUTERNAME 參數的 CMDLET 來取得遠端資料

有數個 Cmdlet 具有 ComputerName 參數,可讓您從遠端電腦取得物件。

由於這些 Cmdlet 不會使用以 WS-MANAGEMENT 為基礎的 Windows PowerShell 遠端執行功能,因此您可以在執行 Windows PowerShell 的任何電腦上使用這些 Cmdlet 的 ComputerName 參數。 電腦不必針對 Windows PowerShell 遠端執行功能進行設定,而且電腦不需要符合遠端處理的系統需求。

下列 Cmdlet 具有 ComputerName 參數:

Clear-EventLog    Limit-EventLog
Get-Counter       New-EventLog
Get-EventLog      Remove-EventLog
Get-HotFix        Restart-Computer
Get-Process       Show-EventLog
Get-Service       Stop-Computer
Get-WinEvent      Test-Connection
Get-WmiObject     Write-EventLog

例如,下列命令會取得 Server01 遠端電腦上的服務:

Get-Service -ComputerName Server01

一般而言,支援遠端處理而不需要特殊設定的 Cmdlet 具有ComputerName參數,而且沒有Session參數。 若要在您的工作階段中尋找這些 Cmdlet,請輸入:

Get-Command | Where-Object {
    $_.Parameters.Keys -contains 'ComputerName' -and
    $_.Parameters.Keys -notcontains 'Session'
}

如何執行遠端命令

若要在遠端電腦上執行其他命令,請使用 Invoke 命令 Cmdlet。

若要執行單一命令或幾個不相關的命令,請使用 Invoke 命令的 ComputerName 參數來指定遠端電腦。 使用 ScriptBlock 參數指定命令。

例如,下列命令會在 Server01 電腦上執行「取得文化特性」命令。

Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}

ComputerName 參數是針對您在一或多部電腦上執行單一命令或數個不相關命令的情況所設計。 若要建立連到遠端電腦的持續連線,請使用 Session 參數。

如何建立持續性連接(PSSESSION)

當您使用 Invoke 命令 Cmdlet 的 ComputerName 參數時,Windows PowerShell 只會建立命令的連線。 然後,在命令完成時,就會關閉連線。 在命令中定義的任何變數或函數都會遺失。

若要建立連到遠端電腦的持續連線,請使用新的-PSSession Cmdlet。 例如,下列命令會在 Server01 和 Server02 電腦上建立 Pssession,然後將 Pssession 儲存在 $s 變數中。

$s = New-PSSession -ComputerName Server01, Server02

如何在 PSSESSION 中執行命令

使用 PSSession 時,您可以執行一系列共用資料的遠端命令,例如函式、別名和變數的值。 若要在 PSSession 中執行命令,請使用 Invoke 命令 Cmdlet 的 Session 參數。

例如,下列命令會使用 Invoke 命令 Cmdlet,在 Server01 和 Server02 電腦的 Pssession 中執行「取得處理常式」命令。 命令會將處理常式儲存在每個 PSSession 的 $p 變數中。

Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}

因為 PSSession 使用持續性連接,所以您可以在使用 $p 變數的相同 PSSession 中執行另一個命令。 下列命令會計算 $p 中儲存的進程數目。

Invoke-Command -Session $s -ScriptBlock {$p.count}

如何在多部電腦上執行遠端命令

若要在多部電腦上執行遠端命令,請在 [Invoke-Command] 的 ComputerName 參數值中輸入所有電腦名稱稱。 以逗號分隔名稱。

例如,下列命令會在三部電腦上執行「取得文化特性」命令:

Invoke-Command -ComputerName S1, S2, S3 -ScriptBlock {Get-Culture}

您也可以在多個 Pssession 中執行命令。 下列命令會在 Server01、Server02 和 Server03 電腦上建立 Pssession,然後在每個 Pssession 中執行「取得文化特性」命令。

$s = New-PSSession -ComputerName S1, S2, S3
Invoke-Command -Session $s -ScriptBlock {Get-Culture}

若要包含電腦的本機電腦清單,請輸入本機電腦的名稱、輸入點(.),或輸入 "localhost"。

Invoke-Command -ComputerName S1, S2, S3, localhost -ScriptBlock {Get-Culture}

如何在遠端電腦上執行腳本

若要在遠端電腦上執行本機腳本,請使用 Invoke 命令的 FilePath 參數。

例如,下列命令會在 S1 和 S2 電腦上執行 Sample.ps1 腳本:

Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1

腳本的結果會傳回到本機電腦。 您不需要複製任何檔案。

如何停止遠端命令

若要中斷命令,請按 CTRL + C。 中斷要求會傳遞至遠端電腦,並在其中終止遠端命令。

詳細資訊

  • 如需遠端處理系統需求的相關資訊,請參閱about_Remote_Requirements

  • 如需格式化遠端輸出的說明,請參閱about_Remote_Output

  • 如需遠端處理運作方式、如何管理遠端資料、特殊設定、安全性問題和其他常見問題的詳細資訊,請參閱about_Remote_FAQ

  • 如需解決遠端錯誤的協助,請參閱 about_Remote_Troubleshooting。

  • 如需 Pssession 和持續連線的詳細資訊,請參閱about_PSSessions

  • 如需 Windows PowerShell 背景工作的詳細資訊,請參閱about_Jobs

about_Remoting

另請參閱

about_PSSessions

about_Remote_Disconnected_Sessions

about_Remote_Requirements

about_Remote_FAQ

about_Remote_TroubleShooting

about_Remote_Variables

Enter-PSSession

Invoke-Command

New-PSSession