Enter-PSSession: ejecución de comandos remotos en el shell interactivo
El cmdlet Enter-PSSession le permite establecer una sesión de PowerShell interactiva persistente con una computadora remota. Todos los comandos que ingresa en su símbolo del sistema se ejecutan en la computadora remota. En este artículo, explicaremos las características principales de Enter-PSSession y cómo se puede usar para administrar de forma remota computadoras con Windows 10/11 y Windows Server 2022/2019/2016.
Este
Enter-PSSessioncmdlet funciona con la pila PowerShell Remoting. PSRemoting se basa en servicios web para administración (WS-Management) y servicio WinRM (administración remota de Windows). El tráfico entre ordenadores se cifra a nivel de protocolo (opcionalmente, puede habilitar el cifrado SSL para el tráfico WinRM de PSRemoting). Puede utilizar varios métodos de autenticación, incluidos NTLM y Kerberos.
En el caso sencillo. para establecer una sesión interactiva de PowerShell con una computadora remota, debe especificar solo el nombre de la computadora para conectarse (la opción ComputerName). Para conectarse a una computadora remota, simplemente ejecute el comando:
Enter-PSSession hq-srv01.a-d.site
Si el usuario actual tiene permiso para conectarse a un host remoto, se conectará a un shell interactivo en la computadora remota.
Puede solicitar las credenciales de usuario antes de conectarse:
Enter-PsSession -ComputerName hq-srv01.a-d.site -Credentials a-d\maxbakO :
$creds = Get-Credential
Enter-PSSession -ComputerName hq-srv01 -Credential $credsTenga en cuenta que el nombre de la computadora remota ahora se muestra entre corchetes al comienzo de su solicitud de PowerShell ([hq-srv01.a-d.site]). De esta manera, puede averiguar si está ejecutando una sesión de shell local o remota.
El resultado de todos los comandos que se ejecutan de forma remota se muestra en su consola local. Puedes ejecutar el
hostnamecomando y asegúrese de ejecutarlo en una computadora remota.
Puede ejecutar cualquier comando en este símbolo del sistema interactivo (según sus privilegios).
Por ejemplo, mostremos la configuración de red de Windows usando PowerShell:
Get-NetIPConfigurationPuede cambiar la configuración de DNS en la computadora remota:
Set-DNSClientServerAddress -InterfaceIndex 6 -ServerAddresses 192.168.13.4, 192.168.100.4
Para salir de una sesión de shell remota interactiva, ejecute
Exit-PSSessiono
exit. El indicador de PS se volverá habitual y volverá a su consola local de PowerShell:
Anteriormente, los administradores usaban principalmente la herramienta PsExec para ejecutar un símbolo del sistema interactivo en una computadora Windows remota. Sin embargo, cuando apareció Enter-PSSession, ya no necesitaron usar herramientas externas.
En Windows Server 2016/2019/2022, PowerShell Remoting está habilitado de forma predeterminada (puede verlo en Administrador del servidor -> Servidor local -> Administración remota=Habilitado).
Get-PSSessionConfigurationEste comando también se usa para obtener una lista de usuarios y grupos que pueden conectarse a través de WinRM. Para usar PSRemoting, una cuenta de usuario debe ser miembro del grupo Administradores o Usuarios de administración remota. Puede obtener más información sobre cómo habilitar WinRM PowerShell Remoting para usuarios que no son administradores.
Puede probar si puede conectarse a su computadora localmente a través de PowerShell Remoting:
Test-WSMan -ComputerName localhost
Si el comando devuelve una versión del esquema WSMan, se permiten conexiones remotas a la computadora mediante PS Remoting.
Si PowerShell Remoting está deshabilitado o no configurado, aparece el siguiente error:
Test-WSMan : <f:WSManFaultxmlns:f="http://schemas.microsoft.com/wbem/wsman/1/wsmanfault" Code="2150858770" Machine="srv02"><f:Message>The client cannot connect to the destination specified in the request. Verify that the service on the destination is running and is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to analyze and configure the WinRM service: "winrm quickconfig".Para habilitar la comunicación remota de PowerShell, ejecute este comando:
Enable-PSRemoting -ForceEste comando:
Habilita el servicio WinRM y establece su tipo de inicio en Automático;
Crea un punto de conexión en el puerto WinRM predeterminado (TCP/5985 para tráfico HTTP);
Agrega excepciones para WS-Management al Firewall de Windows (si está configurando PSRemoting manualmente, agregue una regla de firewall usando PowerShell o con GPO)
Permite sesiones remotas de PowerShell
Reinicia el servicio WinRM
Asegúrese de que el servicio WinRM se esté ejecutando y configurado para iniciarse automáticamente:
Get-Service WinRM | Select MachineName,Name,Status, StartTypeEl comando Enable-PSRemoting solo funciona para dominios y perfiles de red privados de Windows. Si desea habilitar PSRemoting en una computadora en una red pública, cambie la ubicación de la red de Pública a Privada, o use el siguiente comando:
Enable-PSRemoting -SkipNetworkProfileCheck -ForceEn un dominio de Active Directory, la forma más sencilla de configurar de forma centralizada la administración remota de Windows (PSRemoting) en servidores y equipos es a través de la directiva de grupo.
Las versiones modernas de PowerShell (v6 o v7) admiten el protocolo Secure Shell (SSH) para conectarse a una computadora remota a través de PowerShell Remoting. Un punto de conexión SSH debe estar disponible en una computadora remota (¿Cómo habilitar el servidor OpenSSH integrado en Windows 10?). Puede iniciar una sesión interactiva de PSRemoting a través de SSH con este comando:
Enter-PSSession -HostName maxbak@hq-srv01.a-d.siteO autentícate a través de SSH usando una clave RSA:
Enter-PSSession -HostName maxbak@hq-srv01.a-d.site:22 -KeyFilePath c:\PS\max_rsa_keyPuede usar Enter-PSSession junto con New-PSSession:
$s = New-PSSession -ComputerName hq-srv01.a-d.site
Enter-PSSession -Session $sEnter-PSSession admite varios métodos de autenticación. Puede configurar el que desee utilizando el parámetro -Authentication. Se admiten los métodos de autenticación Basic, Digest, Kerberos, CredSSP, NegotiateWithImplicitCredential, Negotiate Challenge.
En el ejemplo anterior, mostramos cómo crear una conexión interactiva Enter-PSSession entre computadoras en el mismo dominio de Windows (es suficiente especificar un FQDN o un nombre corto para la conexión, se usa la autenticación Kerberos). Si intenta conectarse a una computadora remota usando su dirección IP o CNAME, no será autenticado:
Enter-PSSession : Connecting to remote server 192.168.31.12 failed with the following error message: The WinRM client cannot process the request. Default authentication may be used with an IP address under the following conditions: the transport is HTTPS or the destination is in the TrustedHosts list, and explicit credentials are provided. Use winrm.cmd to configure TrustedHosts. Note that computers in the TrustedHosts list might not be authenticated.Para conectarse a una computadora remota usando su dirección IP, puede agregar el host a la lista de hosts confiables (Trusted Hosts) o usar SSL para WinRM (es más seguro).
Para agregar una dirección IP a hosts de confianza, ejecute este comando:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value 192.168.13.5Puede agregar un host de confianza usando una máscara comodín:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value *.a-d.sitePara mostrar la lista de hosts de confianza:
Get-Item WSMan:\localhost\Client\TrustedHostsDe la misma manera, puede agregar su host a la lista de hosts confiables en una computadora remota.
Reiniciar el servicio:
Restart-Service WinRMPara conectarse a una computadora remota usando su dirección IP, ejecute el siguiente comando:
Enter-PSSession -ComputerName 192.168.13.5 -Credential (Get-Credential -UserName a-d\maxbak)Este
Enter-PSSessiony
New-PSSessionLos cmdlets crean una sesión remota uno a uno persistente y se usan principalmente en escenarios interactivos. Si desea ejecutar secuencias de comandos o trabajos automáticamente o hacer algo en varias computadoras remotas simultáneamente, use el comando Invocar-Comando.







