Поделиться через


Disable-PSRemoting

Запрещает конечным точкам PowerShell получать удаленные подключения.

Синтаксис

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

Описание

Этот командлет доступен только на платформе Windows.

Командлет Disable-PSRemoting блокирует удаленный доступ ко всем конфигурациям конечных точек сеанса PowerShell версии 6 и более поздних версий на локальном компьютере. Это не влияет на конфигурации конечных точек Windows PowerShell. Чтобы отключить конфигурации конечных точек Windows PowerShell сеанса, выполните Disable-PSRemoting команду из сеанса Windows PowerShell.

Чтобы повторно включить удаленный доступ ко всем конфигурациям конечных точек сеанса PowerShell версии 6 и более поздних версий Enable-PSRemoting , используйте командлет . Чтобы повторно включить удаленный доступ ко всем конфигурациям конечных точек сеанса Windows PowerShell, запустите Enable-PSRemoting из сеанса Windows PowerShell.

Примечание

Если вы хотите отключить весь удаленный доступ PowerShell к локальному компьютеру Windows, эту команду необходимо выполнить как из сеанса PowerShell версии 6 или более поздней, так и из сеанса Windows PowerShell. Windows PowerShell по умолчанию устанавливается на всех компьютерах Windows.

Чтобы отключить и повторно включить удаленный доступ к определенным конфигурациям конечных точек сеанса, используйте Enable-PSSessionConfiguration командлеты и Disable-PSSessionConfiguration . Чтобы задать определенные конфигурации доступа для отдельных конечных точек, используйте Set-PSSessionConfiguration командлет вместе с параметром AccessMode . Дополнительные сведения о конфигурациях сеансов см. в разделе about_Session_Configurations.

Примечание

Даже после запуска Disable-PSRemoting вы по-прежнему можете устанавливать замыкания на себя на локальном компьютере. Подключение замыкания на себя — это удаленный сеанс PowerShell, который исходит из и подключается к тому же локальному компьютеру. Удаленные сеансы из внешних источников остаются заблокированными. Для подключений с замыкания на себя необходимо использовать неявные учетные данные вместе с параметром EnableNetworkAccess . Дополнительные сведения о замыканиях на себя см. в разделе New-PSSession.

Этот командлет доступен только на платформе Windows. Он недоступен в версиях PowerShell для Linux или macOS. Чтобы выполнить этот командлет, запустите PowerShell с параметром Запуск от имени администратора .

Примеры

Пример 1. Запрет удаленного доступа ко всем конфигурациям сеансов PowerShell

В этом примере запрещается удаленный доступ ко всем конфигурациям конечных точек сеанса PowerShell на компьютере.

Disable-PSRemoting

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

WARNING: Disabling the session configurations does not undo all the changes made by the Enable-PSRemoting
 or Enable-PSSessionConfiguration cmdlet. You might have to manually undo the changes by following these steps:
    1. Stop and disable the WinRM service.
    2. Delete the listener that accepts requests on any IP address.
    3. Disable the firewall exceptions for WS-Management communications.
    4. Restore the value of the LocalAccountTokenFilterPolicy to 0, which restricts remote access to
       members of the Administrators group on the computer.

Пример 2. Запрет удаленного доступа ко всем конфигурациям сеансов PowerShell без запроса подтверждения

Этот пример предотвращает удаленный доступ ко всем конфигурациям конечных точек сеанса PowerShell на компьютере без запроса.

Disable-PSRemoting -Force

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

WARNING: Disabling the session configurations does not undo all the changes made by the Enable-PSRemoting
 or Enable-PSSessionConfiguration cmdlet. You might have to manually undo the changes by following these steps:
    1. Stop and disable the WinRM service.
    2. Delete the listener that accepts requests on any IP address.
    3. Disable the firewall exceptions for WS-Management communications.
    4. Restore the value of the LocalAccountTokenFilterPolicy to 0, which restricts remote access to
       members of the Administrators group on the computer.

Пример 3. Эффекты выполнения этого командлета

В этом примере показан эффект использования командлета Disable-PSRemoting . Чтобы выполнить эту последовательность команд, запустите PowerShell с параметром Запуск от имени администратора .

После отключения конфигураций сеансов New-PSSession командлет пытается создать удаленный сеанс на локальном компьютере (также называемый замыкание на себя). Так как удаленный доступ отключен на локальном компьютере, команда завершается ошибкой.

Disable-PSRemoting -Force
New-PSSession -ComputerName localhost -ConfigurationName PowerShell.6

WARNING: Disabling the session configurations does not undo all the changes made by the Enable-PSRemoting
 or Enable-PSSessionConfiguration cmdlet. You might have to manually undo the changes by following these steps:
    1. Stop and disable the WinRM service.
    2. Delete the listener that accepts requests on any IP address.
    3. Disable the firewall exceptions for WS-Management communications.
    4. Restore the value of the LocalAccountTokenFilterPolicy to 0, which restricts remote access to
       members of the Administrators group on the computer.

New-PSSession : [localhost] Connecting to remote server localhost failed with the following error
 message : Access is denied. For more information, see the about_Remote_Troubleshooting Help topic.
At line:1 char:1
+ New-PSSession -ComputerName localhost -ConfigurationName PowerShell.6
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : OpenError: (System.Management.A\u2026tion.RemoteRunspace:RemoteRunspace)
 [New-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : AccessDenied,PSSessionOpenFailed

Пример 4. Эффекты выполнения этого командлета и Enable-PSRemoting

В этом примере показано влияние на конфигурации сеанса при использовании Disable-PSRemoting командлетов и Enable-PSRemoting .

Disable-PSRemoting используется для отключения удаленного доступа ко всем конфигурациям конечных точек сеанса PowerShell. Параметр Force блокирует вывод любых запросов для пользователей. Командлеты Get-PSSessionConfiguration и Format-Table отображают конфигурации сеансов на компьютере.

Выходные данные показывают, что всем удаленным пользователям с сетевым маркером отказано в доступе к конфигурациям конечных точек. Группе администраторов на локальном компьютере разрешен доступ к конфигурациям конечных точек при условии, что они подключаются локально (также называют замыкание на себя) и используют неявные учетные данные.

Disable-PSRemoting -Force
Get-PSSessionConfiguration | Format-Table -Property Name, Permission -AutoSize

Enable-PSRemoting -Force
Get-PSSessionConfiguration | Format-Table -Property Name, Permission -AutoSize

Name               Permission
----               ----------
PowerShell.6       NT AUTHORITY\NETWORK AccessDenied, NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed ...
PowerShell.6.2.0   NT AUTHORITY\NETWORK AccessDenied, NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed ...

Name               Permission
----               ----------
PowerShell.6       NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed ...
PowerShell.6.2.0   NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed ...

Командлет Enable-PSRemoting повторно включает удаленный доступ ко всем конфигурациям конечных точек сеанса PowerShell на компьютере. Параметр Force подавляет все запросы пользователей и перезапускает службу WinRM без запроса. Новые выходные данные показывают, что дескрипторы безопасности AccessDenied удалены из всех конфигураций сеанса.

Пример 5. Замыкания на себя с отключенными конфигурациями конечных точек сеанса

В этом примере показано, как отключаются конфигурации конечных точек, а также показано, как установить подключение на себя с отключенной конечной точкой. Disable-PSRemoting отключает все конфигурации конечных точек сеанса PowerShell.

Disable-PSRemoting -Force

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

WARNING: Disabling the session configurations does not undo all the changes made by the Enable-PSRemoting
 or Enable-PSSessionConfiguration cmdlet. You might have to manually undo the changes by following these steps:
    1. Stop and disable the WinRM service.
    2. Delete the listener that accepts requests on any IP address.
    3. Disable the firewall exceptions for WS-Management communications.
    4. Restore the value of the LocalAccountTokenFilterPolicy to 0, which restricts remote access to
       members of the Administrators group on the computer.

New-PSSession -ComputerName localhost -ConfigurationName powershell.6 -Credential (Get-Credential)

PowerShell credential request
Enter your credentials.
User: UserName
Password for user UserName: ************

New-PSSession: [localhost] Connecting to remote server localhost failed with the following error message
 : Access is denied. For more information, see the about_Remote_Troubleshooting Help topic.

New-PSSession -ComputerName localhost -ConfigurationName powershell.6 -EnableNetworkAccess

Id Name       Transport ComputerName  ComputerType   State   ConfigurationName   Availability
 -- ----       --------- ------------  ------------   -----   -----------------   ------------
 1  Runspace1  WSMan     localhost     RemoteMachine  Opened  powershell.6           Available

Первая попытка создания удаленного New-PSSession сеанса на локальном компьютере. Параметр ConfigurationName используется для указания отключенной конечной точки PowerShell. Учетные данные явно передаются команде с помощью параметра Credential . Этот тип подключения проходит через сетевой стек и не является замыкания на себя. Следовательно, попытка подключения к отключенной конечной точке завершается ошибкой "Доступ запрещен ".

Второй метод New-PSSession также пытается создать удаленный сеанс на локальном компьютере. В этом случае это успешно, так как это подключение замыкания на себя, которое обходит сетевой стек.

Подключение за замыкания на себя создается при выполнении следующих условий:

  • Имя компьютера для подключения — localhost.
  • Учетные данные не передаются. Для подключения используется текущий вошедший пользователь (неявные учетные данные).
  • Используется параметр переключателя EnableNetworkAccess .

Дополнительные сведения о подключениях замыкания на себя см. в документе New-PSSession .

Пример 6. Отключение всех конфигураций конечных точек удаленного взаимодействия PowerShell

В этом примере показано, как выполнение команды не влияет на конфигурации Disable-PSRemoting конечных точек Windows PowerShell. Get-PSSessionConfigurationЗапуск в Windows PowerShell отображает все конфигурации конечных точек. Мы видим, что конфигурации конечных точек Windows PowerShell не отключены.

Disable-PSRemoting -Force
powershell.exe -command 'Get-PSSessionConfiguration'

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

WARNING: Disabling the session configurations does not undo all the changes made by the Enable-PSRemoting
 or Enable-PSSessionConfiguration cmdlet. You might have to manually undo the changes by following these steps:
    1. Stop and disable the WinRM service.
    2. Delete the listener that accepts requests on any IP address.
    3. Disable the firewall exceptions for WS-Management communications.
    4. Restore the value of the LocalAccountTokenFilterPolicy to 0, which restricts remote access to
       members of the Administrators group on the computer.

Name          : microsoft.powershell
PSVersion     : 5.1
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote
                Management Users AccessAllowed

Name          : microsoft.powershell.workflow
PSVersion     : 5.1
StartupScript :
RunAsUser     :
Permission    : BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed

Name          : microsoft.powershell32
PSVersion     : 5.1
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote
                Management Users AccessAllowed

Name          : PowerShell.6
PSVersion     : 6.2
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\NETWORK AccessDenied, 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\NETWORK AccessDenied, NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators
                AccessAllowed, BUILTIN\Remote Management Users AccessAllowed

powershell.exe -command 'Disable-PSRemoting -Force'
powershell.exe -command 'Get-PSSessionConfiguration'

WARNING: Disabling the session configurations does not undo all the changes made by the Enable-PSRemoting or
Enable-PSSessionConfiguration cmdlet. You might have to manually undo the changes by following these steps:
    1. Stop and disable the WinRM service.
    2. Delete the listener that accepts requests on any IP address.
    3. Disable the firewall exceptions for WS-Management communications.
    4. Restore the value of the LocalAccountTokenFilterPolicy to 0, which restricts remote access to members of the
Administrators group on the computer.

Name          : microsoft.powershell
PSVersion     : 5.1
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\NETWORK AccessDenied, NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators
                AccessAllowed, BUILTIN\Remote Management Users AccessAllowed

Name          : microsoft.powershell.workflow
PSVersion     : 5.1
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management
                Users AccessAllowed

Name          : microsoft.powershell32
PSVersion     : 5.1
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\NETWORK AccessDenied, NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators
                AccessAllowed, BUILTIN\Remote Management Users AccessAllowed

Name          : PowerShell.6
PSVersion     : 6.2
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\NETWORK AccessDenied, 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\NETWORK AccessDenied, NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators
                AccessAllowed, BUILTIN\Remote Management Users AccessAllowed

Чтобы отключить эти конфигурации конечных точек, Disable-PSRemoting команду необходимо выполнить в Windows PowerShell сеансе. Теперь запуск из Windows PowerShell показывает, Get-PSSessionConfiguration что все конфигурации конечных точек отключены.

Пример 7. Запрет удаленного доступа к конфигурациям сеанса с настраиваемыми дескрипторами безопасности

В этом примере показано, что Disable-PSRemoting командлет отключает удаленный доступ ко всем конфигурациям сеанса, включающим конфигурации сеанса с настраиваемыми дескрипторов безопасности.

Register-PSSessionConfiguration создает конфигурацию тестового сеанса . Параметр FilePath указывает файл конфигурации сеанса, который настраивает сеанс. Параметр ShowSecurityDescriptorUI отображает диалоговое окно, которое задает разрешения для конфигурации сеанса. В диалоговом окне Разрешения мы создадим настраиваемые разрешения полного доступа для указанного пользователя.

Командлеты Get-PSSessionConfiguration и Format-Table отображают конфигурации сеансов и их свойства. Выходные данные показывают, что конфигурация тестового сеанса обеспечивает интерактивный доступ и специальные разрешения для указанного пользователя.

Disable-PSRemoting отключает удаленный доступ ко всем конфигурациям сеанса.

Register-PSSessionConfiguration -Name Test -FilePath .\TestEndpoint.pssc -ShowSecurityDescriptorUI -Force
Get-PSSessionConfiguration | Format-Table -Property Name, Permission -Wrap

Disable-PSRemoting -Force
Get-PSSessionConfiguration | Format-Table -Property Name, Permission -Wrap
New-PSSession -ComputerName localhost -ConfigurationName Test

Name               Permission
----               ----------
PowerShell.6       NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed,
                   BUILTIN\Remote Management Users AccessAllowed
PowerShell.6.2.0   NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed,
                   BUILTIN\Remote Management Users AccessAllowed
Test               NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed,
                   User01 AccessAllowed

WARNING: Disabling the session configurations does not undo all the changes made by the Enable-PSRemoting
 or Enable-PSSessionConfiguration cmdlet. You might have to manually undo the changes by following these steps:
    1. Stop and disable the WinRM service.
    2. Delete the listener that accepts requests on any IP address.
    3. Disable the firewall exceptions for WS-Management communications.
    4. Restore the value of the LocalAccountTokenFilterPolicy to 0, which restricts remote access to
       members of the Administrators group on the computer.

Name               Permission
----               ----------
PowerShell.6       NT AUTHORITY\NETWORK AccessDenied, NT AUTHORITY\INTERACTIVE AccessAllowed,
                   BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed
PowerShell.6.2.0   NT AUTHORITY\NETWORK AccessDenied, NT AUTHORITY\INTERACTIVE AccessAllowed,
                   BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed
Test               NT AUTHORITY\NETWORK AccessDenied, NT AUTHORITY\INTERACTIVE AccessAllowed,
                   BUILTIN\Administrators AccessAllowed, User01 AccessAllowed

New-PSSession : [localhost] Connecting to remote server localhost failed with the following error message
 : Access is denied. For more information, see the about_Remote_Troubleshooting Help topic.
At line:1 char:1
+ New-PSSession -ComputerName localhost -ConfigurationName Test
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : OpenError: (System.Management.A\u2026tion.RemoteRunspace:RemoteRunspace)
 [New-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : AccessDenied,PSSessionOpenFailed

Get-PSSessionConfiguration Теперь командлеты и Format-Table показывают, что дескриптор безопасности AccessDenied для всех пользователей сети добавляется во все конфигурации сеанса, включая конфигурацию тестового сеанса. Хотя другие дескрипторы безопасности не изменяются, дескриптор безопасности "network_deny_all" имеет приоритет. Это иллюстрируется попыткой использовать New-PSSession для подключения к конфигурации тестового сеанса.

Пример 8. Повторное включение удаленного доступа к выбранным конфигурациям сеанса

В этом примере показано, как повторно включить удаленный доступ к определенным конфигурациям сеансов. После отключения всех конфигураций сеанса мы повторно включаем определенный сеанс.

Командлет Set-PSSessionConfiguration используется для изменения конфигурации сеанса PowerShell.6 . Параметр AccessMode со значением Remote повторно включает удаленный доступ к конфигурации.

Disable-PSRemoting -Force
Get-PSSessionConfiguration | Format-Table -Property Name, Permission -AutoSize

Set-PSSessionConfiguration -Name PowerShell.6 -AccessMode Remote -Force
Get-PSSessionConfiguration | Format-Table -Property Name, Permission -AutoSize

WARNING: Disabling the session configurations does not undo all the changes made by the Enable-PSRemoting
 or Enable-PSSessionConfiguration cmdlet. You might have to manually undo the changes by following these steps:
    1. Stop and disable the WinRM service.
    2. Delete the listener that accepts requests on any IP address.
    3. Disable the firewall exceptions for WS-Management communications.
    4. Restore the value of the LocalAccountTokenFilterPolicy to 0, which restricts remote access to
       members of the Administrators group on the computer.

Name                 Permission
----                 ----------
PowerShell.6         NT AUTHORITY\NETWORK AccessDenied, NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Adm ...
PowerShell.6.2.0     NT AUTHORITY\NETWORK AccessDenied, NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Adm ...

Name                 Permission
----                 ----------
PowerShell.6         NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\ ...
PowerShell.6.2.0     NT AUTHORITY\NETWORK AccessDenied, NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Adm ...

Параметры

-Confirm

Запрос подтверждения перед выполнением командлета.

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

-WhatIf

Показывает, что произойдет при запуске командлета. Командлет не выполняется.

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

Входные данные

None

Вы не можете передавать объекты в этот командлет.

Выходные данные

None

Этот командлет не возвращает выходные данные.

Примечания

Этот командлет доступен только на платформах Windows.

  • Отключение конфигураций сеансов не отменяет все изменения, внесенные Enable-PSRemoting командлетами или Enable-PSSessionConfiguration . Вам может потребоваться отменить указанные ниже изменения вручную.

    1. Остановка и отключение службы WinRM.
    2. Удаление прослушивателя, принимающего запросы по любому IP-адресу.
    3. Отключение исключений брандмауэра для соединений WS-Management.
    4. Восстановление нулевого значения параметра LocalAccountTokenFilterPolicy, при котором удаленный доступ на компьютере получают только участники группы "Администраторы".
  • Конфигурация конечной точки сеанса — это группа параметров, определяющих среду для сеанса. Каждый сеанс, который подключается к компьютеру, должен использовать одну из конфигураций конечных точек сеанса, зарегистрированных на компьютере. Запретив удаленный доступ ко всем конфигурациям конечных точек сеансов, удаленные пользователи не могут устанавливать сеансы, которые подключаются к компьютеру.