Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
DESCRIPCIÓN BREVE
Describe cómo ejecutar comandos remotos en Windows PowerShell.
DESCRIPCIÓN LARGA
Puede ejecutar comandos remotos en un solo equipo o en varios equipos mediante una conexión temporal o persistente. También puede iniciar una sesión interactiva con un solo equipo remoto.
En este tema se proporciona una serie de ejemplos para mostrar cómo ejecutar diferentes tipos de comandos remotos. Después de probar estos comandos básicos, lea los temas de ayuda que describen cada cmdlet que se usa en estos comandos. En los temas se proporcionan los detalles y se explica cómo puede modificar los comandos para adaptarlos a sus necesidades.
Nota: Para usar la comunicación remota de Windows PowerShell, los equipos locales y remotos deben estar configurados para la comunicación remota. Para obtener más información, consulte 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 escriba se ejecutan en el equipo remoto, como si los hubiera escrito directamente en el equipo remoto. Solo puede conectarse a un equipo en cada sesión interactiva.
Para iniciar una sesión interactiva, use el cmdlet Enter-PSSession. El comando siguiente inicia una sesión interactiva con el equipo Server01:
Enter-PSSession Server01
El símbolo del sistema cambia para indicar que está conectado a la computadora Server01.
Server01\PS>
Ahora, puede escribir comandos en el equipo Server01.
Para finalizar la sesión interactiva, escriba:
Exit-PSSession
Para obtener más información, vea Enter-PSSession.
CÓMO USAR 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 usan la comunicación remota de Windows PowerShell basada en WS-Management, puede usar el parámetro ComputerName de estos cmdlets en cualquier equipo que ejecute Windows PowerShell. Los equipos no tienen que estar configurados para la comunicación remota de Windows PowerShell y los equipos no tienen que cumplir los requisitos del sistema para la comunicación remota.
Los cmdlets siguientes 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 Stop-Computer
Get-WinEvent Test-Connection
Get-WmiObject Write-EventLog
Por ejemplo, el siguiente comando obtiene los servicios en el equipo remoto Server01:
Get-Service -ComputerName Server01
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 la sesión, escriba:
Get-Command | Where-Object {
$_.Parameters.Keys -contains 'ComputerName' -and
$_.Parameters.Keys -notcontains 'Session'
}
CÓMO EJECUTAR UN COMANDO REMOTO
Para ejecutar otros comandos en equipos remotos, use el cmdlet Invoke-Command.
Para ejecutar un solo comando o algunos comandos no relacionados, use el parámetro ComputerName de Invoke-Command para especificar los equipos remotos. Utilice el parámetro ScriptBlock para especificar el comando.
Por ejemplo, el siguiente comando ejecuta un comando Get-Culture en el equipo Server01.
Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}
El parámetro ComputerName está diseñado para situaciones en las 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 solo para el comando. A continuación, cierra la conexión cuando se completa el comando. Todas las variables o funciones definidas en el comando se pierden.
Para crear una conexión persistente a un equipo remoto, use el cmdlet New-PSSession. Por ejemplo, el siguiente comando crea PSSessions en los equipos Server01 y Server02 y, a continuación, guarda las PSSessions en la variable $s.
$s = New-PSSession -ComputerName Server01, Server02
CÓMO EJECUTAR COMANDOS EN UNA PSSESSION
Con psSession, puede ejecutar una serie de comandos remotos que comparten datos, como funciones, alias y los valores de las variables. Para ejecutar comandos en un PSSession, use el parámetro Session del cmdlet Invoke-Command.
Por ejemplo, el siguiente comando usa el cmdlet Invoke-Command para ejecutar un comando Get-Process en PSSessions en los equipos Server01 y Server02. El comando guarda los procesos en una variable $p en cada PSSession.
Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}
Dado que PSSession utiliza una conexión persistente, puede ejecutar otro comando en el mismo PSSession que utilice la variable $p. El siguiente comando cuenta el número de procesos guardados en $p.
Invoke-Command -Session $s -ScriptBlock {$p.count}
CÓMO EJECUTAR UN COMANDO REMOTO EN VARIAS COMPUTADORAS
Para ejecutar un comando remoto en varios equipos, escriba todos los nombres de los equipos en el valor del parámetro ComputerName de Invoke-Command. Separe los nombres con comas.
Por ejemplo, el siguiente comando 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 siguientes comandos crean PSSessions en los equipos Server01, Server02 y Server03 y, a continuación, ejecutan un comando Get-Culture en cada una de las PSSessions.
$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, use el parámetro FilePath de Invoke-Command.
Por ejemplo, el siguiente comando ejecuta el script Sample.ps1 en los equipos S1 y S2:
Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.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 finaliza el comando remoto.
PARA MÁS INFORMACIÓN
Para obtener información sobre los requisitos del sistema para la comunicación remota, consulte about_Remote_Requirements.
Para obtener ayuda sobre el formato de salida remota, consulte about_Remote_Output.
Para obtener información sobre cómo funciona la comunicación remota, cómo administrar datos remotos, configuraciones especiales, problemas de seguridad y otras preguntas frecuentes, consulte about_Remote_FAQ.
Para obtener ayuda sobre cómo resolver errores de comunicación remota, consulte about_Remote_Troubleshooting.
Para obtener información sobre PSSessions y conexiones persistentes, consulte about_PSSessions.
Para obtener información sobre los trabajos en segundo plano de Windows PowerShell, consulte about_Jobs.
PALABRAS CLAVE
about_Remoting