Share via


about_Remote_Requirements

簡短描述

描述在 PowerShell 中執行遠端命令的系統需求和設定需求。

完整描述

本主題描述在PowerShell中建立遠端連線和執行遠端命令的系統需求、使用者需求和資源需求。 它也提供設定遠端作業的指示。

注意

許多 Cmdlet (包括 Get-ServiceGet-ProcessGet-WMIObjectGet-EventLogGet-WinEvent Cmdlet,) 使用 Microsoft .NET Framework 方法來擷取物件,從遠端電腦取得物件。 它們不會使用PowerShell遠端基礎結構。 本檔中的需求不適用於這些 Cmdlet。

若要尋找具有 ComputerName 參數但不使用 PowerShell 遠端處理的 Cmdlet,請閱讀 Cmdlet 之 ComputerName 參數的描述。

系統需求

若要在 Windows PowerShell 3.0 上執行遠端工作階段,本機和遠端電腦必須具有下列專案:

  • Windows PowerShell 3.0 或更新版本
  • Microsoft .NET Framework 4 或更新版本
  • Windows 遠端管理 3.0

若要在 Windows PowerShell 2.0 上執行遠端會話,本機和遠端電腦必須具有下列專案:

  • Windows PowerShell 2.0 或更新版本
  • Microsoft .NET Framework 2.0 或更新版本
  • Windows 遠端管理 2.0

您可以在執行 Windows PowerShell 2.0 和 Windows PowerShell 3.0 的電腦之間建立遠端會話。 不過,只有在兩部計算機都執行 Windows PowerShell 3.0 時,才能在 Windows PowerShell 3.0 上執行的功能,例如中斷連線並重新連線到會話的功能。

若要尋找已安裝 PowerShell 版本的版本號碼,請使用 $PSVersionTable 自動變數。

Windows 遠端管理 (WinRM) 3.0 和 Microsoft .NET Framework 4 包含在 Windows 操作系統 Windows 8、Windows Server 2012 和較新版本中。 舊版操作系統的 WinRM 3.0 包含在 Windows Management Framework 3.0 中。 如果計算機沒有所需的 WinRM 版本或 Microsoft .NET Framework,則安裝會失敗。

使用者權限

若要建立遠端會話並執行遠端命令,根據預設,目前的用戶必須是遠端電腦上的 Administrators 群組成員,或提供系統管理員的認證。 否則命令會失敗。

在遠端電腦上建立會話和執行命令所需的許可權 (或本機電腦上的遠端會話) 是由會話組態所建立, (也稱為會話連線之遠端電腦上的 端點) 。 具體而言,會話設定上的安全描述項會決定誰可以存取會話設定,以及誰可以使用它進行連線。

預設工作階段設定、Microsoft.PowerShell、Microsoft.PowerShell32Microsoft.PowerShell.Workflow 上的安全性描述項只允許存取 Administrators 群組的成員。

如果目前的使用者沒有許可權使用會話設定,則命令執行命令 (使用暫存會話) 或在遠端電腦上建立持續性會話失敗。 用戶可以使用 Cmdlet 的 ConfigurationName 參數,建立會話以選取不同的會話設定,如果有的話。

計算機上的 Administrators 群組成員可以藉由變更預設會話設定上的安全性描述元,以及建立具有不同安全性描述元的新會話組態,來判斷誰有權從遠端連線到計算機。

如需會話設定的詳細資訊,請參閱 about_Session_Configurations

Windows 網路位置

從 Windows PowerShell 3.0 開始,Enable-PSRemotingCmdlet 可以在私人、網域和公用網路上的 Windows 用戶端和伺服器版本上啟用遠端處理。

在具有私人和網域網路的 Windows 伺服器上,Cmdlet 會 Enable-PSRemoting 建立允許不受限制遠端訪問的防火牆規則。 它也會為公用網路建立防火牆規則,只允許從相同本機子網中的計算機進行遠端訪問。 此本機子網防火牆規則預設會在公用網路上的 Windows 伺服器版本上啟用,但在 Enable-PSRemoting 變更或刪除規則時會重新套用規則。

根據預設,在具有私人和網域網路的 Windows 用戶端版本上 Enable-PSRemoting ,Cmdlet 會建立允許不受限制遠端訪問的防火牆規則。

若要在具有公用網路的 Windows 用戶端版本上啟用遠端功能,請使用 Cmdlet 的 Enable-PSRemotingSkipNetworkProfileCheck 參數。 它會建立防火牆規則,只允許從相同本機子網中的計算機進行遠端訪問。

若要移除公用網路上的本機子網限制,並允許從用戶端和伺服器版本 Windows 的所有位置進行遠端訪問,請使用 Set-NetFirewallRuleNetSecurity 模組中的 Cmdlet。 執行以下命令:

Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

注意

不同 Windows 版本的防火牆規則名稱可能不同。 用來 Get-NetFirewallRule 查看規則清單。 啟用防火牆規則之前,請先檢視規則中的安全性設定,以確認組態適合您的環境。

在 Windows PowerShell 2.0 的 Windows 伺服器上,Enable-PSRemoting建立允許所有網路上遠端訪問的防火牆規則。

在 Windows PowerShell 2.0 中,在 Windows 的用戶端版本上,Enable-PSRemoting只會在私人和網域網路上建立防火牆規則。 如果網路位置是公用的, Enable-PSRemoting 則失敗。

以系統管理員身分執行

下列遠端作業需要系統管理員權限:

  • 建立本機電腦的遠端連線。 這通常稱為「回送」案例。

  • 管理本機電腦上的會話設定。

  • 在本機計算機上檢視和變更 WS-Management 設定。 這些是 WSMAN: 磁碟驅動器之 LocalHost 節點中的設定。

若要執行這些工作,即使您是本機計算機上的 Administrators 群組成員,您也必須使用 [以系統管理員身分執行] 選項啟動 PowerShell。

在 Windows 7 和 Windows Server 2008 R2 中,使用 [ 以系統管理員身分執行 ] 選項啟動 PowerShell:

  1. 依序按兩下 [開始]、[所有程式]、[配件] 和 [PowerShell] 資料夾。
  2. 以滑鼠右鍵按兩下 PowerShell,然後按兩下 [ 以系統管理員身分執行]。

若要使用 [以系統管理員身分執行] 選項啟動 Windows PowerShell:

  1. 依序按兩下 [開始]、[所有程式] 和 [PowerShell] 資料夾。
  2. 以滑鼠右鍵按兩下 PowerShell,然後按兩下 [ 以系統管理員身分執行]。

PowerShell 的其他 Windows 檔案總管專案也提供 [ 以系統管理員身 分執行] 選項,包括快捷方式。 只要以滑鼠右鍵按兩下專案,然後按兩下 [ 以系統管理員身分執行]。

當您從其他程序啟動 PowerShell,例如 Cmd.exe 時,請使用 [ 以系統管理員身分執行 ] 選項來啟動程式。

如何設定您的電腦進行遠端處理

執行所有支援 Windows 版本的電腦可以在 PowerShell 中建立遠端連線,並在 PowerShell 中執行遠端命令,而不需要進行任何設定。 不過,若要接收連線,並允許使用者建立本機和遠端使用者管理的 PowerShell 會話, (“PSSessions”) 並在本機計算機上執行命令,您必須在計算機上啟用 PowerShell 遠端處理。

默認會針對PowerShell遠端啟用 Windows Server 2012和更新版本的 Windows Server。 如果設定已變更,您可以執行 Cmdlet 來還原預設設定 Enable-PSRemoting

在所有其他支援的 Windows 版本上,您必須執行 Enable-PSRemoting Cmdlet 以啟用 PowerShell 遠端處理。

WinRM 服務支援 PowerShell 的遠端功能,這是 Microsoft 實作 Web Services for Management (WS-Management) 通訊協定。 當您啟用 PowerShell 遠端處理時,您可以變更 WS-Management 的預設設定,並新增系統設定,讓用戶連線到 WS-Management。

若要將 PowerShell 設定為接收遠端命令:

  1. 使用 [ 以系統管理員身分執行 ] 選項啟動 PowerShell。
  2. 在命令提示字元中,輸入:Enable-PSRemoting

若要確認遠端設定正確,請執行測試命令,例如下列命令,以在本機計算機上建立遠端會話。

New-PSSession

如果遠端設定正確,命令會在本機計算機上建立會話,並傳回代表會話的物件。 輸出應該類似下列範例輸出:

Id Name        ComputerName    State    ConfigurationName
-- ----        ------------    -----    -----
1  Session1    localhost       Opened   Microsoft.PowerShell

如果命令失敗,如需協助,請參閱 about_Remote_Troubleshooting

了解原則

當您從遠端工作時,您會使用兩個 PowerShell 實例,一個在本機電腦上,另一個在遠端電腦上。 因此,您的工作會受到本機和遠端電腦上的 Windows 原則和 PowerShell 原則影響。

一般而言,在連線之前和建立連線時,本機計算機上的原則會生效。 當您使用連線時,遠端電腦上的原則會生效。

Linux 和macOS的基本驗證限制

從 Linux 或 macOS 系統連線到 Windows 時,不支援透過 HTTP 進行基本身份驗證。 基本身份驗證可以透過 HTTPS 使用,方法是在目標伺服器上安裝憑證。 憑證必須具有符合主機名的 CN 名稱,不會過期或撤銷。 自我簽署憑證可用於測試用途。

如需詳細資訊 ,請參閱如何:設定 HTTPS 的 WINRM

下列命令會從提升許可權的命令提示字元執行,會在 Windows 上使用已安裝的憑證來設定 HTTPS 接聽程式。

$hostinfo = '@{Hostname="<DNS_NAME>"; CertificateThumbprint="<THUMBPRINT>"}'
winrm create winrm/config/Listener?Address=*+Transport=HTTPS $hostinfo

在 Linux 或 macOS 端,選取 [基本] 進行驗證和 -UseSSl。

注意

基本身份驗證無法與網域帳戶搭配使用;需要本機帳戶,而且該帳戶必須位於 Administrators 群組中。

# The specified local user must have administrator rights on the target machine.
# Specify the unqualified username.
$cred = Get-Credential username
$session = New-PSSession -Computer <hostname> -Credential $cred `
  -Authentication Basic -UseSSL

透過 HTTPS 的基本身份驗證 替代方式是 交涉。 這會導致客戶端與伺服器與承載之間的NTLM驗證透過 HTTP 加密。

下列說明如何搭配 New-PSSession使用交涉

# The specified user must have administrator rights on the target machine.
$cred = Get-Credential username@hostname
$session = New-PSSession -Computer <hostname> -Credential $cred `
  -Authentication Negotiate

注意

Windows Server 需要額外的登錄設定,才能讓系統管理員使用 NTLM 進行連線,而不是內建的系統管理員。 請參閱 Remote Connections 的 [驗證] 底下的LocalAccountTokenFilterPolicy 登錄設定

另請參閱