Enable-PSRemoting

設定電腦以接收遠端命令。

Syntax

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

Description

Cmdlet 會將 Enable-PSRemoting 電腦設定為接收使用 WS-Management 技術傳送的 PowerShell 遠端命令。

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

您只需要在接收命令的每部電腦上執行此命令一次。 您不需要在只傳送命令的電腦上執行它。 因為組態會啟動接聽程式,所以請謹慎執行它,只在需要時執行它。

從 PowerShell 3.0 開始,當電腦位於公用網路上時, Enable-PSRemoting Cmdlet 可以在 Windows 的用戶端版本上啟用 PowerShell 遠端功能。 如需詳細資訊,請參閱 SkipNetworkProfileCheck 參數的描述

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

  • 執行 Set-WSManQuickConfig Cmdlet,其會執行下列工作:
    • 啟動 WinRM 服務。
    • 將 WinRM 服務上的啟動類型設為 [自動]。
    • 建立接聽程式,以接受有關任何 IP 位址的要求。
    • 針對 WS-Management 通訊啟用防火牆例外。
    • 如果尚未註冊 Microsoft.PowerShellMicrosoft.PowerShell.Workflow 會話設定,則註冊它們。
    • 如果尚未註冊,請在64位電腦上註冊 Microsoft.PowerShell32 工作話設定。
    • 啟用所有工作階段設定。
    • 變更所有工作階段設定的安全性描述元,以允許遠端存取。
  • 重新啟動 WinRM 服務,讓前述變更生效。

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

警告

在同時具有 PowerShell 3.0 和 PowerShell 2.0 的系統上,請勿使用 PowerShell 2.0 來執行 Enable-PSRemotingDisable-PSRemoting Cmdlet。 命令可能會成功,但遠端功能未正確設定。 遠端命令和稍後嘗試啟用和停用遠端,可能會失敗。

範例

範例 1:設定計算機以接收遠端命令

此命令會將電腦設定為接收遠端命令。

Enable-PSRemoting

範例 2:設定計算機以接收遠端命令,而不需確認提示

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

Enable-PSRemoting -Force

範例 3:允許用戶端上的遠端訪問

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

Get-NetFirewallRule -Name 'WINRM*' | Select-Object -Property 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-NetFirewallRule NetSecurity 模組中的 Cmdlet 會新增防火牆規則,允許從任何遠端位置從公用網路進行遠端訪問。 這包括不同子網中的位置。

注意

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

參數

-Confirm

執行 Cmdlet 之前先提示您確認。

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

-Force

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

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

-SkipNetworkProfileCheck

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

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

若要移除本機子網限制,並啟用來自公用網路上所有位置的遠端訪問,請使用 Set-NetFirewallRule NetSecurity 模組中的 Cmdlet。

此參數是在 PowerShell 3.0 中引進的。

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

-WhatIf

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

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

輸入

None

您無法使用管線將物件傳送至此 Cmdlet。

輸出

String

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

備註

在 PowerShell 3.0 中, Enable-PSRemoting 為 WS-Management 通訊建立下列防火牆例外狀況。

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

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

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

在 PowerShell 2.0 中, Enable-PSRemoting 為 WS-Management 通訊建立下列防火牆例外狀況。

在 Windows 作業系統的伺服器版本上,它會為所有允許遠端訪問的網路建立防火牆規則。

在 Windows 作業系統的用戶端版本上, Enable-PSRemoting PowerShell 2.0 只會針對網域和專用網位置建立防火牆例外狀況。 若要將安全性風險降到最低, Enable-PSRemoting 請勿在用戶端版本的 Windows 上建立公用網路的防火牆規則。 當目前的網路位置為公用時, Enable-PSRemoting 會傳回下列訊息:無法檢查防火牆的狀態。

從 PowerShell 3.0 開始,將所有工作階段組態的 Enabled 屬性值設定為 $TrueEnable-PSRemoting以啟用所有工作階段組態。

在 PowerShell 2.0 中, Enable-PSRemoting 從會話設定的安全性描述項中移除 Deny_All 設定。 在 PowerShell 3.0 中, Enable-PSRemoting 移除 Deny_AllNetwork_Deny_All 設定。 這可讓您遠端訪問保留供本機使用的會話組態。