共用方式為


Disable-PSRemoting

防止遠端使用者在本機電腦上執行命令。

語法

Disable-PSRemoting
       [-Force]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Description

Disable-PSRemoting Cmdlet 可防止其他使用者在本機電腦上執行命令。

Disable-PSRemoting 會封鎖遠端存取本機電腦上的所有會話設定。 這可防止遠端使用者建立本機計算機的暫存或持續性會話。 Disable-PSRemoting 不會防止本機計算機的使用者在本機計算機或遠端電腦上建立會話(PSSessions)。

若要重新啟用所有會話設定的遠端訪問,請使用 Enable-PSRemoting Cmdlet。 若要啟用所選會話設定的遠端訪問,請使用 Set-PSSessionConfiguration Cmdlet 的 AccessMode 參數。 您也可以使用 Enable-PSSessionConfiguration 和 Disable-PSSessionConfiguration Cmdlet 來啟用和停用所有使用者的作業階段設定。 如需工作階段組態的詳細資訊,請參閱 about_Session_Configurations

在 Windows PowerShell 2.0 中,Disable-PSRemoting 可防止所有使用者建立本機計算機的使用者管理會話。 在 Windows PowerShell 3.0 中,Disable-PSRemoting 會防止其他使用者在本機電腦上建立使用者管理的會話,但允許本機計算機的使用者建立使用者管理的回送會話。

若要執行此 Cmdlet,請使用 [以系統管理員身分執行] 選項啟動 Windows PowerShell。

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

範例

範例 1:防止遠端訪問所有工作階段設定

PS C:\> Disable-PSRemoting

此命令可防止遠端存取電腦上的所有工作階段設定。

範例 2:防止遠端訪問所有會話設定,而不需確認提示

PS C:\> Disable-PSRemoting -Force

此命令可防止遠端存取電腦上的所有工作階段設定,而不會提示。

範例 3:執行此 Cmdlet 的效果

PS C:\> Disable-PSRemoting -Force


[ADMIN] PS C:\> New-PSSession -ComputerName localhost


Id Name       ComputerName    State    Configuration         Availability
-- ----       ------------    -----    -------------         ------------
1 Session1   Server02...     Opened   Microsoft.PowerShell     Available
# On Server02 remote computer:
PS C:\> New-PSSession -ComputerName Server01

[SERVER01] Connecting to remote server failed with the following error
message : Access is denied. For more information, see the about_Remote_Troubleshooting Help topic.
+ CategoryInfo          : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [], PSRemotingTransportException
+ FullyQualifiedErrorId : PSSessionOpenFailed

此範例顯示使用 Disable-PSRemoting Cmdlet 的效果。 若要執行此命令順序,請使用 [以系統管理員身分執行] 選項啟動 Windows PowerShell。

第一個命令會使用 Disable-PSRemoting Cmdlet 來停用 Server01 計算機上所有已註冊的會話設定。

第二個命令會使用 New-PSSession Cmdlet 來建立本機電腦的遠端會話(也稱為「回送」)。 命令成功。

第三個命令是在 Server02 遠端電腦上執行。 此命令會使用 New-PSSession Cmdlet 來建立 Server01 遠端電腦的會話。 因為遠端存取已停用,因此命令會失敗。

範例 4:執行此 Cmdlet 和 Enable-PSRemoting 的效果

PS C:\> Disable-PSRemoting -force

[ADMIN] PS C:\> Get-PSSessionConfiguration | Format-Table -Property Name, Permission -Auto

Name                          Permission
----                          ----------
microsoft.powershell          NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.powershell.workflow NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.powershell32        NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.ServerManager       NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
WithProfile                   NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed


[ADMIN] PS C:\> Enable-PSRemoting -Force
WinRM already is set up to receive requests on this machine.
WinRM already is set up for remote management on this machine.

[ADMIN] PS C:\> Get-PSSessionConfiguration | Format-Table -Property Name, Permission -Auto

Name                          Permission
----                          ----------
microsoft.powershell          BUILTIN\Administrators AccessAllowed
microsoft.powershell.workflow BUILTIN\Administrators AccessAllowed
microsoft.powershell32        BUILTIN\Administrators AccessAllowed
microsoft.ServerManager       BUILTIN\Administrators AccessAllowed
WithProfile                   BUILTIN\Administrators AccessAllowed

此範例顯示使用 Disable-PSRemotingEnable-PSRemoting Cmdlet 之會話設定的效果。

第一個命令會使用 Disable-PSRemoting Cmdlet 來停用所有會話設定的遠端訪問。 Force 參數會隱藏所有使用者提示。

第二個命令會使用 Get-PSSessionConfiguration Cmdlet 來顯示電腦上的會話組態。 此命令會使用管線運算符將結果傳送至 Format-Table 命令,其中只會顯示數據表中組態的 Name 和 Permission 屬性。

輸出顯示只有遠端使用者無法存取設定。 允許本機電腦上的Administrators群組成員使用會話設定。 輸出也會顯示命令會影響包含使用者建立WithProfile工作階段設定的所有工作階段組態。

第三個命令會使用 Enable-PSRemoting Cmdlet,重新啟用電腦上所有會話設定的遠端訪問。 命令會使用 Force 參數來隱藏所有使用者提示,並在不提示的情況下重新啟動 WinRM 服務。

第四個命令會使用 Get-PSSessionConfigurationFormat-Table Cmdlet 來顯示會話組態的名稱和許可權。 結果顯示 AccessDenied 安全性描述元已從所有工作階段設定中移除。

範例 5:防止遠端訪問具有自定義安全性描述元的會話設定

PS C:\> Register-PSSessionConfiguration -Name Test -FilePath .\TestEndpoint.pssc -ShowSecurityDescriptorUI

[ADMIN] PS C:\> Get-PSSessionConfiguration | Format-Table -Property Name, Permission -Wrap

Name                          Permission
----                          ----------
microsoft.powershell          BUILTIN\Administrators AccessAllowed
Test                          NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed,
DOMAIN01\User01 AccessAllowed

[ADMIN] PS C:\> Disable-PSRemoting -Force


[ADMIN] PS C:\> Get-PSSessionConfiguration | Format-Table -Property Name, Permission -Wrap

Name                          Permission
----                          ----------
microsoft.powershell          NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
Test                          NT AUTHORITY\NETWORK AccessDenied, NTAUTHORITY\INTERACTIVE AccessAllowed,
BUILTIN\Administrators AccessAllowed, DOMAIN01\User01 AccessAllowed

# Domain01\User01

PS C:\> New-PSSession -ComputerName Server01 -ConfigurationName Test
[Server01] Connecting to remote server failed with the following error message : Access is denied. For more information, see the about_Rem
ote_Troubleshooting Help topic.
+ CategoryInfo          : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [], PSRemotingTransportException
+ FullyQualifiedErrorId : PSSessionOpenFailed

此範例示範 Disable-PSRemoting Cmdlet 會停用所有會話設定的遠端訪問,這些設定包含具有自定義安全性描述元的會話設定。

第一個命令會使用 Register-PSSessionConfiguration Cmdlet 來建立測試會話組態。 此命令會使用 FilePath 參數來指定會話組態檔,以自定義會話和 ShowSecurityDescriptorUI 參數,以顯示設定會話組態許可權的對話方塊。 在 [許可權] 對話框中,我們會為 Domain01\User01 使用者建立自定義的完整訪問許可權。

第二個命令會使用 Get-PSSessionConfigurationFormat-Table Cmdlet 來顯示會話組態及其屬性。 輸出顯示測試會話設定允許 Domain01\User01 使用者的互動式存取和特殊許可權。

第三個命令會使用 Disable-PSRemoting Cmdlet 來停用所有會話設定的遠端訪問。

第四個命令會使用 Get-PSSessionConfigurationFormat-Table Cmdlet 來顯示會話組態及其屬性。 輸出顯示所有網路使用者的 AccessDenied 安全性描述元會新增至包含測試工作階段設定的所有工作階段設定。 雖然其他安全性描述元並未變更,但「network_deny_all」安全性描述元會優先使用。

第五個命令顯示 Disable-PSRemoting 命令會防止具有測試會話設定特殊許可權的 Domain01\User01 使用者,使用測試會話組態從遠端連線到計算機。

範例 6:重新啟用對所選會話設定的遠端訪問

PS C:\> Disable-PSRemoting -Force


[ADMIN] PS C:\> Get-PSSessionConfiguration | Format-Table -Property Name, Permission -Auto

Name                          Permission
----                          ----------
microsoft.powershell          NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.powershell.workflow NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.powershell32        NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.ServerManager       NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
WithProfile                   NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed

[ADMIN] PS C:\> Set-PSSessionConfiguration -Name Microsoft.ServerManager -AccessMode Remote -Force

[ADMIN] PS C:\> Get-PSSessionConfiguration | Format-Table -Property Name, Permission -Auto

Name                          Permission
----                          ----------
microsoft.powershell          NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.powershell.workflow NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.powershell32        NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.ServerManager       BUILTIN\Administrators AccessAllowed
WithProfile                   NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed

此範例示範如何只對選取的會話設定重新啟用遠程訪問。

第一個命令會使用 Disable-PSRemoting Cmdlet 來停用所有會話設定的遠端訪問。

第二個命令會使用 Get-PSSessionConfigurationFormat-Table Cmdlet 來顯示會話組態及其屬性。 輸出會顯示所有網路使用者的 AccessDenied 安全性描述元已新增至所有工作階段設定。

第三個命令會使用 Set-PSSessionConfiguration Cmdlet。 此命令會使用 AccessMode 參數與 Remote 值,以啟用對 Microsoft.ServerManager 會話設定的遠端訪問。 您也可以使用 AccessMode 參數來啟用本機存取和停用會話設定。

第四個命令會使用 Get-PSSessionConfigurationFormat-Table Cmdlet 來顯示會話組態及其屬性。 輸出顯示已移除所有網路使用者的 AccessDenied 安全性描述元,藉此還原對 Microsoft.ServerManager 會話設定的遠端訪問。

參數

-Confirm

在執行 Cmdlet 之前,提示您進行確認。

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

-Force

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

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

-WhatIf

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

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

輸入

None

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

輸出

None

此 Cmdlet 不會傳回任何物件。

備註

  • 停用會話設定並不會復原 Enable-PSRemotingEnable-PSSessionConfiguration Cmdlet 所做的所有變更。 您可能必須手動復原下列變更。

停止並停用 WinRM 服務。

2.刪除接受任何IP位址要求的接聽程式。

3.停用 WS-Management 通訊的防火牆例外狀況。

4.將 LocalAccountTokenFilterPolicy 的值還原為 0,這會限制對電腦上的 Administrators 群組成員的遠端訪問。

會話組態是一組設定,可定義會話的環境。 連接到計算機的每個會話都必須使用計算機上註冊的其中一個會話組態。 藉由拒絕所有會話設定的遠端訪問,您可以有效地防止遠端使用者建立連線到計算機的會話。

在 Windows PowerShell 2.0 中,Disable-PSRemoting 會將Deny_All專案新增至所有會話設定的安全性描述項。 此設定可防止所有使用者建立本機計算機的使用者管理會話。 在 Windows PowerShell 3.0 中,Disable-PSRemoting 會將Network_Deny_All專案新增至所有會話設定的安全性描述項。 此設定可防止其他電腦上的使用者建立本機計算機上的使用者管理會話,但允許本機計算機的使用者建立使用者管理的回送會話。

在 Windows PowerShell 2.0 中,Disable-PSRemoting 相當於 Disable-PSSessionConfiguration -Name *。 在 Windows PowerShell 3.0 和更新版本中,Disable-PSRemoting 相當於 Set-PSSessionConfiguration -Name \<Configuration name\> -AccessMode Local

在 Windows PowerShell 2.0 中,Disable-PSRemoting 是函式。 從 Windows PowerShell 3.0 開始,它是 Cmdlet。