TEMA about_Remote DESCRIPCIÓN BREVE Describe cómo se ejecutan comandos remotos en Windows PowerShell. DESCRIPCIÓN DETALLADA Puede ejecutar comandos remotos en un solo equipo o en varios equipos utilizando una conexión temporal o persistente. Asimismo, puede iniciar una sesión interactiva con un solo equipo remoto. En este tema se proporcionan varios ejemplos para mostrar cómo se ejecutan diferentes tipos de comandos remotos. Después de probar estos comandos básicos, lea los temas de Ayuda en los que se describen los cmdlets que se utilizan en estos comandos. Estos temas incluyen información detallada y explican cómo puede modificar los comandos de acuerdo con sus necesidades. Nota: para poder utilizar la comunicación remota de Windows PowerShell basada en WS_Management, los equipos locales y remotos deben estar configurados para ella. Para obtener más información, vea about_Remote_Requirements. CÓMO INICIAR UNA SESIÓN INTERACTIVA (ENTER-PSSESSION) La manera más fácil de ejecutar comandos remotos es iniciar una sesión interactiva con un equipo remoto. Cuando se inicia la sesión, los comandos que se escriben se ejecutan en el equipo remoto, como si se hubieran escrito directamente en el equipo remoto. Puede conectarse solamente a un equipo en cada sesión interactiva. Para iniciar una sesión interactiva, utilice el cmdlet Enter-PSSession. El siguiente comando inicia una sesión interactiva con el equipo Servidor01: enter-pssession servidor01 El símbolo del sistema cambia para indicar que se ha conectado al equipo Servidor01. Servidor01\PS> Ahora, puede escribir comandos en el equipo Servidor01. Para finalizar la sesión interactiva, escriba: exit-pssession Para obtener más información, vea Enter-PSSession. CÓMO UTILIZAR LOS CMDLETS QUE TIENEN UN PARÁMETRO COMPUTERNAME PARA OBTENER DATOS REMOTOS Varios cmdlets tienen un parámetro ComputerName que permite obtener objetos de equipos remotos. Dado que estos cmdlets no utilizan la comunicación remota de Windows PowerShell para comunicar, puede utilizar el parámetro ComputerName de estos cmdlets en cualquier equipo donde se ejecute Windows PowerShell. Los equipos no tienen que estar configurados para la comunicación remota de Windows PowerShell ni tienen que cumplir los requisitos del sistema para la comunicación remota. Los siguientes cmdlets tienen un parámetro ComputerName: Clear-EventLog Limit-EventLog Get-Counter New-EventLog Get-EventLog Remove-EventLog Get-HotFix Restart-Computer Get-Process Show-EventLog Get-Service Show-Service Get-WinEvent Stop-Computer Get-WmiObject Write-EventLog Por ejemplo, el comando siguiente obtiene los servicios en el equipo remoto Servidor01: get-service -computername servidor01 Normalmente, los cmdlets que admiten la comunicación remota sin una configuración especial tienen un parámetro ComputerName y no tienen un parámetro Session. Para encontrar estos cmdlets en su sesión, escriba: get-command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"} Para determinar si el parámetro ComputerName requiere la comunicación remota de Windows PowerShell, lea la descripción del parámetro. Para ello, escriba: get-help <nombre del cmdlet> -parameter ComputerName CÓMO EJECUTAR UN COMANDO REMOTO Para ejecutar otros comandos en equipos remotos, use el cmdlet Invoke-Command. Para ejecutar un solo comando o varios comandos no relacionados, utilice el parámetro ComputerName de Invoke-Command para especificar los equipos remotos. Use el parámetro ScriptBlock para especificar el comando. Por ejemplo, el comando siguiente ejecuta un comando Get-Culture en el equipo Servidor01. invoke-command -computername Servidor01 -scriptblock {get-culture} El parámetro ComputerName se ha diseñado para los casos en los que se ejecuta un solo comando o varios comandos no relacionados en uno o varios equipos. Para establecer una conexión persistente con un equipo remoto, utilice el parámetro Session. CÓMO CREAR UNA CONEXIÓN PERSISTENTE (PSSESSION) Cuando se usa el parámetro ComputerName del cmdlet Invoke-Command, Windows PowerShell establece una conexión solamente para el comando. A continuación, cierra la conexión cuando se completa el comando. Se pierden todas las variables o funciones definidas en el comando. Para crear una conexión persistente con un equipo remoto, utilice el cmdlet New-PSSession. Por ejemplo, el comando siguiente crea PSSessions en los equipos Servidor01 y Servidor02 y, a continuación, las guarda en la variable $s. $s = new-pssession -computername Servidor01, Servidor02 CÓMO EJECUTAR COMANDOS EN UNA PSSESSION Con una PSSession, se pueden ejecutar varios comandos remotos que comparten datos, como funciones, alias y valores de variables. Para ejecutar comandos en una PSSession, utilice el parámetro Session del cmdlet Invoke-Command. Por ejemplo, el comando siguiente utiliza el cmdlet Invoke-Command para ejecutar un comando Get-Process en las PSSessions de los equipos Servidor01 y Servidor02. El comando guarda los procesos en la variable $p en cada PSSession. invoke-command -session $s -scriptblock {$p = get-process} Dado que la PSSession usa una conexión persistente, se puede ejecutar en la misma PSSession otro comando que utilice la variable $p. El comando siguiente cuenta el número de procesos guardados en $p. invoke-command -session $s -scriptblock {$p.count} CÓMO EJECUTAR UN COMANDO REMOTO EN VARIOS EQUIPOS Para ejecutar un comando remoto en varios equipos, escriba todos los nombres de equipo en el valor del parámetro ComputerName de Invoke-Command. Separe los nombres con comas. Por ejemplo, el comando siguiente ejecuta un comando Get-Culture en tres equipos: invoke-command -computername S1, S2, S3 -scriptblock {get-culture} También puede ejecutar un comando en varias PSSessions. Los comandos siguientes crean PSSessions en los equipos Servidor01, Servidor02 y Servidor03 y, a continuación, ejecutan un comando Get-Culture en cada PSSession. $s = new-pssession -computername S1, S2, S3 invoke-command -session $s -scriptblock {get-culture} Para incluir la lista de equipos del equipo local, escriba el nombre del equipo local, escriba un punto (.) o escriba "localhost". invoke-command -computername S1, S2, S3, localhost -scriptblock {get-culture} CÓMO EJECUTAR UN SCRIPT EN EQUIPOS REMOTOS Para ejecutar un script local en equipos remotos, utilice el parámetro FilePath de Invoke-Command. Por ejemplo, el comando siguiente ejecuta el script Ejemplo.ps1 en los equipos S1 y S2: invoke-command -computername S1, S2 -filepath C:\Test\Ejemplo.ps1 Los resultados del script se devuelven al equipo local. No es necesario copiar ningún archivo. CÓMO DETENER UN COMANDO REMOTO Para interrumpir un comando, presione CTRL+C. La solicitud de interrupción se pasa al equipo remoto donde termina el comando remoto. MÁS INFORMACIÓN -- Para obtener información sobre los requisitos del sistema para la comunicación remota, vea about_Remote_Requirements. -- Para obtener Ayuda sobre el formato de los resultados remotos, vea about_Remote_Output. -- Para obtener información sobre el funcionamiento de la comunicación remota, la administración de datos remotos, configuraciones especiales, problemas de seguridad y otras preguntas frecuentes, vea about_Remote_FAQ. -- Para obtener Ayuda sobre cómo resolver los errores remotos, vea about_Remote_Troubleshooting. -- Para obtener información sobre las PSSessions y las conexiones persistentes, vea about_PSSessions. -- Para obtener información sobre los trabajos en segundo plano de Windows PowerShell, vea about_Jobs. PALABRAS CLAVE about_Remoting VEA TAMBIÉN about_PSSessions about_Remote_Requirements about_Remote_FAQ about_Remote_TroubleShooting Enter-PSSession Invoke-Command New-PSSession