Enable-PSRemoting
Configura el equipo para recibir comandos remotos.
Sintaxis
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-Command
cmdlets ,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.
Tipo: | SwitchParameter |
Alias: | cf |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Force
Obliga al comando a ejecutarse sin solicitar la confirmación del usuario.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | 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.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-WhatIf
Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.
Tipo: | SwitchParameter |
Alias: | wi |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Entradas
None
No se pueden canalizar objetos a este cmdlet.
Salidas
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.