Enable-PSRemoting

設定電腦接收遠端命令。

Syntax

Enable-PSRemoting
      [-Force]
      [-SkipNetworkProfileCheck]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Description

此 Cmdlet 僅適用于 Windows 平臺。

Cmdlet 會將 Enable-PSRemoting 電腦設定為使用 WS-Management 技術傳送的 PowerShell 遠端命令。 WS-Management型 PowerShell 遠端處理目前僅在 Windows 平臺上受到支援。

PowerShell 遠端功能預設會在 Windows Server 平臺上啟用。 您可以使用 Enable-PSRemoting 在其他支援的 Windows 版本上啟用 PowerShell 遠端功能,並在遠端功能停用時重新啟用遠端功能。

您必須在將接收命令的每部電腦上執行此命令一次。 您不需要在只傳送命令的電腦上執行它。 由於設定會啟動接聽程式以接受遠端連線,因此最好只在需要的地方執行它。

當電腦在公用網路上時,在 Windows 用戶端版本上啟用 PowerShell 遠端功能通常不允許,但您可以使用 SkipNetworkProfileCheck 參數略 過此限制。 如需詳細資訊,請參閱 SkipNetworkProfileCheck 參數的描述。

單一電腦上可以並存多個 PowerShell 安裝。 執行 Enable-PSRemoting 會針對您執行 Cmdlet 的特定安裝版本設定遠端端點。 因此,如果您在執行 PowerShell 6.2 時執行 Enable-PSRemoting ,則會設定執行 PowerShell 6.2 的遠端端點。 如果您在執行 PowerShell 7 預覽版時執行 Enable-PSRemoting ,則會設定執行 PowerShell 7-preview 的遠端端點。

Enable-PSRemoting 視需要建立兩個遠端端點組態。 如果端點組態已經存在,則只會確保啟用它們。 建立的組態完全相同,但名稱不同。 其中一個名稱會對應至裝載會話的 PowerShell 版本。 另一個組態名稱包含裝載會話之 PowerShell 版本的詳細資訊。 例如,在 PowerShell 6.2 中執行 Enable-PSRemoting 時,您會收到兩個名為 PowerShell.6PowerShell.6.2.2 的已設定端點。 這可讓您使用簡單的名稱 PowerShell.6,建立與最新 PowerShell 6 主機版本的連線。 或者,您可以使用較長的名稱 PowerShell.6.2.2連線到特定的 PowerShell 主機版本。

若要使用新啟用的遠端端點,您必須在使用 Invoke-CommandNew-PSSessionEnter-PSSession Cmdlet 建立遠端連線時,使用ConfigurationName參數指定名稱來指定這些端點。 如需詳細資訊,請參閱範例 4。

Cmdlet 會 Enable-PSRemoting 執行下列作業:

  • 執行 Set-WSManQuickConfig Cmdlet,其會執行下列工作:
    • 啟動 WinRM 服務。
    • 將 WinRM 服務上的啟動類型設定為 [自動]。
    • 建立接聽程式,以接受有關任何 IP 位址的要求。
    • 啟用WS-Management通訊的防火牆例外狀況。
    • 視需要建立簡單且完整名稱的交談端點組態。
    • 啟用所有會話設定。
    • 變更所有會話組態的安全性描述項,以允許遠端存取。
  • 重新開機 WinRM 服務,讓上述變更生效。

若要在 Windows 平臺上執行此 Cmdlet,請使用 [以系統管理員身分執行] 選項啟動 PowerShell。 此 Cmdlet 不適用於 Linux 或 MacOS 版本的 PowerShell。

警告

此 Cmdlet 不會影響Windows PowerShell所建立的遠端端點組態。 它只會影響使用 PowerShell 第 6 版和更新版本建立的端點。 若要啟用和停用由 Windows PowerShell 裝載的 PowerShell 遠端端點,請從Windows PowerShell會話內執行 Enable-PSRemoting Cmdlet。

範例

範例 1:設定電腦以接收遠端命令

這個命令會設定電腦接收遠端命令。

Enable-PSRemoting

WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and does not
affect Windows PowerShell remoting configurations. Run this cmdlet in Windows PowerShell to affect
all PowerShell remoting configurations.

範例 2:設定電腦以接收遠端命令,而不顯示確認提示

這個命令會設定電腦接收遠端命令。 Force參數會隱藏使用者提示。

Enable-PSRemoting -Force

WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and does not
affect Windows PowerShell remoting configurations. Run this cmdlet in Windows PowerShell to affect
all PowerShell remoting configurations.

範例 3:允許用戶端上的遠端存取

此範例示範如何在 Windows 作業系統的用戶端版本上允許從公用網路進行遠端存取。 不同 Windows 版本的防火牆規則名稱可能不同。 用來 Get-NetFirewallRule 查看規則清單。 啟用防火牆規則之前,請先檢視規則中的安全性設定,以確認組態適合您的環境。

Get-NetFirewallRule -Name 'WINRM*' | Select-Object Name

Name
----
WINRM-HTTP-In-TCP-NoScope
WINRM-HTTP-In-TCP
WINRM-HTTP-Compat-In-TCP-NoScope
WINRM-HTTP-Compat-In-TCP

Enable-PSRemoting -SkipNetworkProfileCheck -Force
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any

根據預設, Enable-PSRemoting 會建立允許從私人和網域網路進行遠端存取的網路規則。 這個命令使用 SkipNetworkProfileCheck 參數,允許從同一個本機子網路中的公用網路進行遠端存取。 命令會指定 Force 參數來隱藏確認訊息。

SkipNetworkProfileCheck參數不會影響 Windows 作業系統的伺服器版本,預設允許從相同本機子網中的公用網路進行遠端存取。

Set-NetFirewallRuleNetSecurity模組中的 Cmdlet 會新增防火牆規則,允許從任何遠端位置從公用網路進行遠端存取。 這包括不同子網中的位置。

範例 4:建立新啟用端點設定的遠端會話

此範例示範如何在電腦上啟用 PowerShell 遠端功能、尋找已設定的端點名稱,以及建立其中一個端點的遠端會話。

第一個命令會在電腦上啟用 PowerShell 遠端處理。

第二個命令會列出端點組態。

第三個命令會建立相同電腦的遠端 PowerShell 會話,並依名稱指定 PowerShell.6 端點。 遠端會話將裝載最新的 PowerShell 6 版本 (6.2.2) 。

最後一個命令會 $PSVersionTable 存取遠端會話中的 變數,以顯示裝載會話的 PowerShell 版本。

Enable-PSRemoting -Force

Get-PSSessionConfiguration

$session = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.6

Invoke-Command -Session $session -ScriptBlock { $PSVersionTable }

WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and does not
affect Windows PowerShell remoting configurations. Run this cmdlet in Windows PowerShell to affect
all PowerShell remoting configurations.

Name          : PowerShell.6
PSVersion     : 6.2
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed,
                BUILTIN\Remote Management Users AccessAllowed

Name          : PowerShell.6.2.2
PSVersion     : 6.2
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed,
                BUILTIN\Remote Management Users AccessAllowed

Name                           Value
----                           -----
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSEdition                      Core
PSRemotingProtocolVersion      2.3
Platform                       Win32NT
SerializationVersion           1.1.0.1
GitCommitId                    6.2.2
WSManStackVersion              3.0
PSVersion                      6.2.2
OS                             Microsoft Windows 10.0.18363

注意

防火牆規則的名稱可能會根據 Windows 版本而有所不同。 Get-NetFirewallRule使用 Cmdlet 列出系統上的規則名稱。

參數

-Confirm

在執行 Cmdlet 前提示您確認。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False
-Force

強制執行命令而不要求使用者確認。

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-SkipNetworkProfileCheck

指出當電腦位於公用網路上時,此 Cmdlet 會在 Windows 作業系統的用戶端版本上啟用遠端處理。 此參數會針對公用網路啟用防火牆規則,以便只允許從位於相同本機子網路的電腦進行遠端存取。

此參數不會影響 Windows 作業系統的伺服器版本,預設會有公用網路的本機子網防火牆規則。 如果在伺服器版本上停用本機子網防火牆規則, Enable-PSRemoting 請重新啟用它,而不論此參數的值為何。

若要移除本機子網限制,並從公用網路上的所有位置啟用遠端存取,請使用 Set-NetFirewallRuleNetSecurity 模組中的 Cmdlet。

此參數是在 PowerShell 3.0 中引進。

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-WhatIf

顯示執行 Cmdlet 後會發生的情況。 Cmdlet 並不會執行。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

None

您無法使用管線傳送輸入至此 Cmdlet。

輸出

String

此 Cmdlet 會傳回描述其結果的字串。

備註

此 Cmdlet 僅適用于 Windows 平臺。

在 Windows 作業系統的伺服器版本上, Enable-PSRemoting 為允許遠端存取的私人和網域網路建立防火牆規則,並為公用網路建立防火牆規則,只允許從相同本機子網的電腦進行遠端存取。

在 Windows 作業系統的用戶端版本上, Enable-PSRemoting 為允許不受限制的遠端存取的私人和網域網路建立防火牆規則。 若要針對允許從同一個本機子網路進行遠端存取的公用網路建立防火牆規則,請使用 SkipNetworkProfileCheck 參數。

在 Windows 作業系統的用戶端或伺服器版本上,若要為公用網路建立防火牆規則,以移除本機子網限制並允許遠端存取 ,請使用 Set-NetFirewallRule NetSecurity 模組中的 Cmdlet 來執行下列命令: Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

Enable-PSRemoting 將所有會話組態的 Enabled 屬性值設定為 $True ,以啟用所有會話組態。

Enable-PSRemoting 會移除 Deny_AllNetwork_Deny_All 設定。 這可讓您遠端存取保留給本機使用的會話組態。