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-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.
Примеры
Пример 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 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.6 по имени. Удаленный сеанс будет размещен с последней версией PowerShell 6 (6.2.2).
Последняя команда обращается к переменной $PSVersionTable
в удаленном сеансе для отображения версии PowerShell, в которой размещается сеанс.
Enable-PSRemoting -Force
Get-PSSessionConfiguration
$session = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.6
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.6
PSVersion : 6.2
StartupScript :
RunAsUser :
Permission : 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\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
В этот командлет нельзя передать входные данные.
Выходные данные
Этот командлет возвращает строки, которые описывают результаты его выполнения.
Примечания
Этот командлет доступен только на платформах 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 . Это обеспечивает удаленный доступ к конфигурациям сеансов, зарезервированным для локального использования.