共用方式為


Enable-PSRemoting

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

語法

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

Description

此 Cmdlet 只能在 Windows 平臺上使用。

Enable-PSRemoting Cmdlet 會將電腦設定為接收使用 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-preview」時執行 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 主機版本,即 PowerShell.6.2.2

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

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

  • 執行 Set-WSManQuickConfig Cmdlet,其會執行下列工作:
    • 啟動 WinRM 服務。
    • 將 WinRM 服務上的啟動類型設定為 [自動]。
    • 建立監聽器以接受來自任何 IP 位址的請求。
    • 啟用 WS-Management 通訊的防火牆例外配置。
    • 視需要建立簡單且長名稱的會話端點組態。
    • 啟用所有工作階段設定。
    • 變更所有會話設定的安全性描述元,以允許遠端訪問。
  • 重新啟動 WinRM 服務,讓上述變更生效。

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

謹慎

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

如需使用 PowerShell 遠端管理 的詳細資訊,請參閱下列文章:

範例

範例 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 操作系統的伺服器版本,默認允許從相同本機子網中的公用網路進行遠端訪問。

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

範例 4:建立新啟用端點組態的遠端會話

此範例示範如何在計算機上啟用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 之前,提示您進行確認。

類型:SwitchParameter
別名:cf
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-Force

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

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-SkipNetworkProfileCheck

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

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

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

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

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-WhatIf

顯示 Cmdlet 執行時會發生什麼事。 Cmdlet 未被執行。

類型:SwitchParameter
別名:wi
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

None

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

輸出

String

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

備註

此 Cmdlet 僅適用於 Windows 平臺。

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

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

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

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

Enable-PSRemoting 會移除 Deny_AllNetwork_Deny_All 設定。 此功能允許遠端存取預留供本地使用的會話配置。