主題 about_Remote 簡短描述 說明如何在 Windows PowerShell 中執行遠端命令。 完整描述 您可以使用暫時連線或固定連線,在單一電腦或多部電腦執行遠端命令。您也可以啟 動與單一遠端電腦之間的互動工作階段。 本主題提供一系列範例,示範如何執行不同類型的遠端命令。在您試過這些基本命令 之後,請參閱相關說明主題,了解這些命令中所使用的每個 Cmdlet。這些主題提供 詳細的資料,並說明如何根據您的需求修改命令。 注意:若要使用 Windows PowerShell 遠端功能,本機和遠端電腦必須完成遠端功能 的設定。如需詳細資訊,請參閱 about_Remote_Requirements。 如何啟動互動式工作階段 (ENTER-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 Show-Service Get-WinEvent Stop-Computer Get-WmiObject Write-EventLog 例如,下列命令會取得 Server01 遠端電腦上的服務: get-service -computername server01 一般而言,Cmdlet 如果支援在沒有特殊設定的情況下進行遠端運算,則具有 ComputerName 參數,但沒有 Session 參數。若要在工作階段中尋找這些 Cmdlet,請輸入: get-command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"} 如何執行遠端命令 若要在遠端電腦執行其他命令,請使用 Invoke-Command Cmdlet。 若要執行單一命令或幾個不相關的命令,請使用 Invoke-Command 的 ComputerName 參數指定遠端電腦,並使用 ScriptBlock 參數指定命令。 例如,下列命令會在 Server01 電腦執行 Get-Culture 命令。 invoke-command -computername Server01 -scriptblock {get-culture} ComputerName 參數是專為在一部或多部電腦上執行單一命令或數個不相關命令的情 況而設計。 若要建立與遠端電腦之間的固定連線,請使用 Session 參數。 如何建立固定連線 (PSSESSION) 當您使用 Invoke-Command Cmdlet 的 ComputerName 參數時,Windows PowerShell 會建立僅供該命令使用的連線,然後再於命令完成後關閉該連線。命令中定義的 任何變數或函數都會遺失。 若要建立與遠端電腦之間的固定連線,請使用 New-PSSession Cmdlet。例如,下列 命令會在 Server01 和 Server02 電腦建立 PSSession,然後將這些 PSSession 儲 存在 $s 變數中。 $s = new-pssession -computername Server01, Server02 如何在 PSSESSION 中執行命令 您可以使用 PSSession 執行共用資料 (例如函數、別名以及變數的值) 的一系列遠 端命令。 若要在 PSSession 中執行命令,請使用 Invoke-Command Cmdlet 的 Session 參數。 例如,下列命令會使用 Invoke-Command Cmdlet 在 Server01 和 Server02 電腦的 PSSession 中執行 Get-Process 命令。這個命令會將處理序儲存在每個 PSSession 的 $p 變數中。 invoke-command -session $s -scriptblock {$p = get-process} 因為 PSSession 使用的是固定連線,所以您可以在相同的 PSSession 中執行使用 $p 的另一個命令。 下列命令會計算 $p 中儲存的處理序數目。 invoke-command -session $s -scriptblock {$p.count} 如何在多部電腦執行遠端命令 若要在多部電腦執行遠端命令,請在 Invoke-Command 的 ComputerName 參數值中輸 入所有電腦名稱,並使用逗號分隔這些名稱。 例如,下列命令會在三部電腦執行 Get-Culture 命令: invoke-command -computername S1, S2, S3 -scriptblock {get-culture} 您也可以在多個 PSSession 中執行一個命令。下列命令會在 Server01、Server02 和 Server03 電腦建立 PSSession,然後在每個 PSSession 中執行 Get-Culture 命令。 $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-Command 的 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_Requirements about_Remote_FAQ about_Remote_TroubleShooting Enter-PSSession Invoke-Command New-PSSession