共用方式為


關於遠端需求

簡短描述

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

詳細描述

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

注意:許多 Cmdlet (包括 Get-Service、Get-Process、Get-WMIObject、Get-EventLog 和 Get-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.PowerShell32 和 Microsoft.PowerShell.Workflow 上的安全性描述項只允許存取 Administrators 群組的成員。

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

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

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

WINDOWS 網路位置

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

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

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

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

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

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

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

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

以系統管理員身分執行

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

WinRM 服務支援 PowerShell 的遠端功能,這是 Microsoft 實作管理 (WS-Management) 通訊協定的 Web 服務。 當您啟用 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 加密。

下列說明如何使用 Negotiate with 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 登錄設定

另請參閱

about_Remote

about_Remote_Variables

about_PSSessions

Invoke-Command

Enter-PSSession

New-PSSession