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


Enable-PSRemoting

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

Синтаксис

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

Описание

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

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

На платформах Windows Server удаленное взаимодействие PowerShell по умолчанию включено. Вы можете использовать для 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-PSSessionEnter-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.

Примеры

Пример 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. 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 Используйте командлет , чтобы получить список имен правил в системе.

Параметры

-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

-SkipNetworkProfileCheck

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

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

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

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

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

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

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

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 включает все конфигурации сеансов, устанавливая для свойства Enabled всех конфигураций сеанса $Trueзначение .

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