Enable-PSRemoting

Configura el equipo para recibir comandos remotos.

Syntax

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

Description

Este cmdlet solo está disponible en la plataforma Windows.

El Enable-PSRemoting cmdlet configura el equipo para recibir comandos remotos de PowerShell que se envían mediante la tecnología WS-Management. Actualmente, la comunicación remota de PowerShell basada en WS solo se admite en la plataforma Windows.

La comunicación remota de PowerShell está habilitada de forma predeterminada en plataformas de Windows Server. Puede usar Enable-PSRemoting para habilitar la comunicación remota de PowerShell en otras versiones compatibles de Windows y volver a habilitar la comunicación remota si se deshabilita.

Solo tiene que ejecutar este comando una vez en cada equipo que recibirá comandos. No es necesario ejecutarlo en equipos que solo envíen comandos. Dado que la configuración inicia los agentes de escucha para aceptar conexiones remotas, es prudente ejecutarla solo cuando sea necesario.

Habilitar la comunicación remota de PowerShell en versiones de cliente de Windows cuando el equipo está en una red pública normalmente no se permite, pero puede omitir esta restricción mediante el parámetro SkipNetworkProfileCheck . Para obtener más información, vea la descripción del parámetro SkipNetworkProfileCheck .

Varias instalaciones de PowerShell pueden existir en paralelo en un único equipo. La ejecución Enable-PSRemoting configurará un punto de conexión de comunicación remota para la versión de instalación específica en la que se ejecuta el cmdlet. Por lo tanto, si ejecuta Enable-PSRemoting PowerShell 6.2, se configurará un punto de conexión remoto que ejecute PowerShell 6.2. Si ejecuta Enable-PSRemoting powerShell 7-preview, se configurará un punto de conexión remoto que ejecute PowerShell 7-preview.

Enable-PSRemoting crea dos configuraciones de punto de conexión remoto según sea necesario. Si las configuraciones de punto de conexión ya existen, simplemente se garantiza que estén habilitadas. Las configuraciones creadas son idénticas, pero tienen nombres diferentes. Uno tendrá un nombre simple correspondiente a la versión de PowerShell que hospeda la sesión. El otro nombre de configuración contiene información más detallada sobre la versión de PowerShell que hospeda la sesión. Por ejemplo, al ejecutarse Enable-PSRemoting en PowerShell 6.2, obtendrá dos puntos de conexión configurados denominados PowerShell.6, PowerShell.6.2.2. Esto le permite crear una conexión a la versión de host de PowerShell 6 más reciente mediante el nombre simple PowerShell.6. O bien, puede conectarse a una versión específica del host de PowerShell con el nombre más largo PowerShell.6.2.2.

Para usar los puntos de conexión remoto recién habilitados, debe especificarlos por nombre con el parámetro ConfigurationName al crear una conexión remota mediante los Invoke-Commandcmdlets ,New-PSSession.Enter-PSSession Para obtener más información, vea el ejemplo 4.

El Enable-PSRemoting cmdlet realiza las siguientes operaciones:

  • Ejecuta el cmdlet Set-WSManQuickConfig , que realiza las siguientes tareas:
    • Inicia el servicio WinRM.
    • Establece el tipo de inicio del servicio WinRM en automático.
    • Crea un agente de escucha para aceptar solicitudes en cualquier dirección IP.
    • Habilita una excepción de firewall para las comunicaciones de WS-Management.
    • Crea las configuraciones de punto de conexión de sesión de nombres simples y largos si es necesario.
    • Habilita todas las configuraciones de sesión.
    • Cambia el descriptor de seguridad de todas las configuraciones de sesión para permitir el acceso remoto.
  • Reinicia el servicio WinRM para que se hagan efectivos los cambios anteriores.

Para ejecutar este cmdlet en la plataforma Windows, inicie PowerShell mediante la opción Ejecutar como administrador. Este cmdlet no está disponible en las versiones de Linux o MacOS de PowerShell.

Precaución

Este cmdlet no afecta a las configuraciones de punto de conexión remoto creadas por Windows PowerShell. Solo afecta a los puntos de conexión creados con powerShell versión 6 y posteriores. Para habilitar y deshabilitar puntos de conexión remotos de PowerShell hospedados por Windows PowerShell, ejecute el Enable-PSRemoting cmdlet desde una sesión de Windows PowerShell.

Ejemplos

Ejemplo 1: Configurar un equipo para recibir comandos remotos

Este comando configura el equipo para recibir comandos remotos.

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.

Ejemplo 2: Configurar un equipo para recibir comandos remotos sin un mensaje de confirmación

Este comando configura el equipo para recibir comandos remotos. El parámetro Force suprime las indicaciones del usuario.

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.

Ejemplo 3: Permitir el acceso remoto en clientes

En este ejemplo se muestra cómo permitir el acceso remoto desde redes públicas en versiones de cliente del sistema operativo Windows. El nombre de la regla de firewall puede ser diferente para diferentes versiones de Windows. Use Get-NetFirewallRule para ver una lista de reglas. Antes de habilitar la regla de firewall, vea la configuración de seguridad de la regla para comprobar que la configuración es adecuada para su entorno.

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

De forma predeterminada, Enable-PSRemoting crea reglas de red que permiten el acceso remoto desde redes privadas y de dominio. El comando usa el parámetro SkipNetworkProfileCheck para permitir el acceso remoto desde redes públicas en la misma subred local. El comando especifica el parámetro Force para suprimir los mensajes de confirmación.

El parámetro SkipNetworkProfileCheck no afecta a las versiones de servidor del sistema operativo Windows, que permiten el acceso remoto desde redes públicas en la misma subred local de forma predeterminada.

El Set-NetFirewallRule cmdlet del módulo NetSecurity agrega una regla de firewall que permite el acceso remoto desde redes públicas desde cualquier ubicación remota. Esto incluye ubicaciones en diferentes subredes.

Ejemplo 4: Creación de una sesión remota en la configuración del punto de conexión recién habilitado

En este ejemplo se muestra cómo habilitar la comunicación remota de PowerShell en un equipo, buscar los nombres de punto de conexión configurados y crear una sesión remota en uno de los puntos de conexión.

El primer comando habilita la comunicación remota de PowerShell en el equipo.

El segundo comando enumera las configuraciones del punto de conexión.

El tercer comando crea una sesión remota de PowerShell en la misma máquina, especificando el punto de conexión de PowerShell.7 por nombre. La sesión remota se hospedará con la versión más reciente de PowerShell 7 (7.3.0).

El último comando accede a la $PSVersionTable variable de la sesión remota para mostrar la versión de PowerShell que hospeda la sesión.

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

Nota:

El nombre de la regla de firewall puede ser diferente en función de la versión de Windows. Use el Get-NetFirewallRule cmdlet para enumerar los nombres de las reglas del sistema.

Parámetros

-Confirm

Le solicita su confirmación antes de ejecutar el cmdlet.

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

-Force

Obliga al comando a ejecutarse sin solicitar la confirmación del usuario.

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

-SkipNetworkProfileCheck

Indica que este cmdlet habilita la comunicación remota en las versiones de cliente del sistema operativo Windows cuando el equipo está en una red pública. Este parámetro habilita una regla de firewall para las redes públicas que permite el acceso remoto solo desde equipos en la misma subred local.

Este parámetro no afecta a las versiones de servidor del sistema operativo Windows, que, de forma predeterminada, tienen una regla de firewall de subred local para redes públicas. Si la regla de firewall de subred local está deshabilitada en una versión del servidor, Enable-PSRemoting vuelva a habilitarla, independientemente del valor de este parámetro.

Para quitar la restricción de subred local y habilitar el acceso remoto desde todas las ubicaciones de las redes públicas, use el Set-NetFirewallRule cmdlet en el módulo NetSecurity .

Este parámetro se introdujo en PowerShell 3.0.

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

-WhatIf

Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.

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

Entradas

None

No se pueden canalizar objetos a este cmdlet.

Salidas

String

Este cmdlet devuelve cadenas que describen sus resultados.

Notas

Este cmdlet solo está disponible en plataformas Windows.

En las versiones de servidor del sistema operativo Windows, Enable-PSRemoting crea reglas de firewall para redes privadas y de dominio que permiten el acceso remoto y crea una regla de firewall para redes públicas que solo permite el acceso remoto desde equipos de la misma subred local.

En las versiones de cliente del sistema operativo Windows, Enable-PSRemoting crea reglas de firewall para redes privadas y de dominio que permiten el acceso remoto sin restricciones. Para crear una regla de firewall para redes públicas que permita el acceso remoto desde la misma subred local, use el parámetro SkipNetworkProfileCheck .

En las versiones de cliente o servidor del sistema operativo Windows, para crear una regla de firewall para redes públicas que quite la restricción de subred local y permita el acceso remoto, use el Set-NetFirewallRule cmdlet en el módulo NetSecurity para ejecutar el siguiente comando: Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

Enable-PSRemoting habilita todas las configuraciones de sesión estableciendo el valor de la propiedad Enabled de todas las configuraciones de sesión en $True.

Enable-PSRemoting quita la configuración de Deny_All y Network_Deny_All . Esto proporciona acceso remoto a las configuraciones de sesión reservadas para uso local.