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