Enable-PSRemoting
設定電腦接收遠端命令。
Syntax
Enable-PSRemoting
[-Force]
[-SkipNetworkProfileCheck]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
此 Cmdlet 僅適用於 Windows 平臺。
Cmdlet 會將 Enable-PSRemoting
電腦設定為使用 WS-Management 技術傳送的 PowerShell 遠端命令。 WS-Management 型 PowerShell 遠端處理目前僅在 Windows 平臺上受到支援。
Windows Server 平台中預設已啟用 PowerShell 遠端。 您可以使用 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.6、 PowerShell.6.2.2 的已設定端點。 這可讓您使用簡單的名稱 PowerShell.6,建立與最新PowerShell 6主機版本的連線。 或者,您可以使用較長的名稱 PowerShell.6.2.2 連線到特定的 PowerShell 主機版本。
若要使用新啟用的遠端端端點,您必須在使用 、、 Cmdlet 建立遠端連線時,使用 ConfigurationName 參數指定名稱來指定這些端點。Enter-PSSession
New-PSSession
Invoke-Command
如需詳細資訊,請參閱範例 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 -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 會新增防火牆規則,以允許從任何遠端位置從公用網路進行遠端訪問。 這包括不同子網中的位置。
範例 4:將遠端會話 Create 至新啟用的端點設定
此範例示範如何在計算機上啟用PowerShell遠端功能、尋找已設定的端點名稱,以及建立其中一個端點的遠端會話。
第一個命令會在電腦上啟用PowerShell遠端處理。
第二個命令會列出端點組態。
第三個命令會建立相同計算機的遠端 PowerShell 工作階段,並依名稱指定 PowerShell.7 端點。 遠程會話將裝載最新的 PowerShell 7 版本 (7.3.0) 。
最後一個命令會 $PSVersionTable
存取遠端會話中的 變數,以顯示裝載會話的 PowerShell 版本。
Enable-PSRemoting -Force
Get-PSSessionConfiguration
$session = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
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.7
PSVersion : 7.3
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed,
BUILTIN\Administrators AccessAllowed,
BUILTIN\Remote Management Users AccessAllowed
Name : PowerShell.7.3.0
PSVersion : 7.3
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 |
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。
輸出
此 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_All 和 Network_Deny_All 設定。 這可讓您遠端訪問保留給本機使用的會話組態。