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


Enable-PSRemoting

Настраивает компьютер для получения удаленных команд.

Синтаксис

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

Описание

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

Командлет Enable-PSRemoting настраивает компьютер для получения удаленных команд PowerShell, отправляемых с помощью технологии WS-Management. WS-Management основанное на PowerShell удалённое администрирование в настоящее время поддерживается только на Windows.

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

Эту команду необходимо выполнить только один раз на каждом компьютере, получающего команды. Его не нужно запускать на компьютерах, которые отправляют только команды. Так как конфигурация запускает прослушиватели, рекомендуется запускать ее только там, где это необходимо.

Включение удаленного доступа PowerShell в клиентских версиях Windows, если компьютер находится в публичной сети, обычно запрещено, но это ограничение можно обойти с помощью параметра SkipNetworkProfileCheck. Дополнительные сведения см. в описании параметра SkipNetworkProfileCheck.

Несколько установок PowerShell могут существовать параллельно на одном компьютере. При запуске Enable-PSRemoting будет настроена конечная точка для удаленного взаимодействия для конкретной версии установки, в которой выполняется командлет. Таким образом, если вы выполняете Enable-PSRemoting при запуске PowerShell 6.2, будет настроена конечная точка удаленного взаимодействия, которая работает на PowerShell 6.2. Если вы запускаете Enable-PSRemoting при использовании PowerShell 7-preview, будет настроена конечная точка удаленного взаимодействия, которая запускает PowerShell 7-preview.

Enable-PSRemoting при необходимости создает две конфигурации удаленных конечных точек. Если конфигурации конечных точек уже существуют, они просто должны быть включены. Созданные конфигурации идентичны, но имеют разные имена. У него будет простое имя, соответствующее версии PowerShell, на котором размещен сеанс. Другое имя конфигурации содержит более подробные сведения о версии PowerShell, в которой размещается сеанс. Например, при запуске Enable-PSRemoting в PowerShell 6.2 вы получите две настроенные конечные точки с именем PowerShell.6, PowerShell.6.2.2. Это позволяет создать подключение к последней версии узла PowerShell 6 с помощью простого имени PowerShell.6. Кроме того, вы можете подключиться к определенной версии узла PowerShell с помощью более длинного имени PowerShell.6.2.2.

Чтобы использовать только что включенные конечные точки удаленного взаимодействия, необходимо указать их по имени с параметром ConfigurationName при создании удаленного подключения с помощью командлетов Invoke-Command,New-PSSession,Enter-PSSession. Дополнительные сведения см. в примере 4.

Командлет Enable-PSRemoting выполняет следующие операции:

  • Запускает командлет Set-WSManQuickConfig, который выполняет следующие задачи:
    • Запускает службу WinRM.
    • Задает тип запуска службы WinRM в значение "Автоматически".
    • Создает прослушиватель для приема запросов на любой IP-адрес.
    • Включает исключение брандмауэра для WS-Management коммуникаций.
    • При необходимости создает простые и длинные конфигурации конечных точек сеанса имени.
    • Включает все конфигурации сеанса.
    • Изменяет дескриптор безопасности всех конфигураций сеансов, чтобы разрешить удаленный доступ.
  • Перезапускает службу WinRM, чтобы внести предыдущие изменения в силу.

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

Осторожность

Этот командлет не влияет на конфигурации удаленных конечных точек, созданные Windows PowerShell. Это влияет только на конечные точки, созданные с помощью PowerShell версии 6 и более поздних версий. Чтобы включить и отключить конечные точки удаленного взаимодействия PowerShell, размещенные в Windows PowerShell, запустите командлет Enable-PSRemoting из сеанса Windows 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, которая разрешает удаленный доступ из общедоступных сетей в одной локальной подсети по умолчанию.

Командлет Set-NetFirewallRule в модуле NetSecurity добавляет правило брандмауэра, которое разрешает удаленный доступ из общедоступных сетей из любого удаленного расположения. Это включает местоположения в разных подсетях.

Пример 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 для перечисления имен правил в системе.

Параметры

-Confirm

Запрашивает подтверждение перед запуском командлета.

Тип:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Force

Принудительно выполняется команда без запроса подтверждения пользователя.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-SkipNetworkProfileCheck

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

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

Чтобы удалить ограничение локальной подсети и включить удаленный доступ из всех расположений в общедоступных сетях, используйте командлет Set-NetFirewallRule в модуле NetSecurity.

Этот параметр появился в PowerShell 3.0.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-WhatIf

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

Тип:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

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

None

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

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

String

Этот командлет возвращает строки, описывающие результаты.

Примечания

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

В версиях операционной системы Windows Enable-PSRemoting создает правила брандмауэра для частных и доменных сетей, которые разрешают удаленный доступ, и создает правило брандмауэра для общедоступных сетей, которое разрешает удаленный доступ только с компьютеров в одной локальной подсети.

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

На клиентских или серверных версиях операционной системы Windows, чтобы создать правило брандмауэра для общедоступных сетей, которое удаляет ограничение локальной подсети и позволяет удаленный доступ, используйте командлет Set-NetFirewallRule в модуле NetSecurity для выполнения следующей команды: Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

Enable-PSRemoting включает все конфигурации сеансов, устанавливая значение свойства Включено для всех конфигураций сеансов на $True.

Enable-PSRemoting удаляет параметры Deny_All и Network_Deny_All. Это обеспечивает удаленный доступ к конфигурациям сеансов, зарезервированным для локального использования.