about_Remote

Se aplica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

TEMA

about_Remote

DESCRIPCIÓN BREVE

Describe cómo ejecutar comandos remotos en Windows PowerShell.

DESCRIPCIÓN LARGA

Puede ejecutar comandos remotos en uno o 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 que muestran cómo ejecutar diferentes tipos de comandos remotos. Cuando haya probado estos comandos básicos, lea los temas de ayuda que describen todos los cmdlets usados en estos comandos. En los temas se proporcionan los detalles y se explica cómo puede modificar los comandos para satisfacer sus necesidades.

Nota

Para usar la comunicación remota de Windows PowerShell®, los equipos locales y remotos deben estar configurados para poder usar la configuració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.

Al iniciar la sesión, los comandos que escribe se ejecutan en el equipo remoto, como si los hubiera escrito directamente en el equipo remoto. Puede conectarse a un único equipo en cada sesión interactiva.

Para iniciar una sesión interactiva, use el cmdlet Enter-PSSession. El siguiente comando inicia una sesión interactiva con el equipo Server01:

        Enter-PSSession Server01

El símbolo del sistema cambia para indicar que está conectado al equipo Server01.

        Server01\PS>

Ahora puede escribir comandos en el equipo Server01.

Para finalizar la sesión interactiva, escriba:

        Exit-PSSession

Para más información, consulte Enter-PSSession.

CÓMO USAR CMDLETS QUE TIENEN EL PARÁMETRO COMPUTERNAME PARA OBTENER DATOS REMOTOS

Hay varios cmdlets que tienen el parámetro ComputerName, que le 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 dichos cmdlets en cualquier equipo que 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 el 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 carecen de un parámetro Session. Para encontrar estos cmdlets en la sesión, escriba:

        Get-Command | where { $_.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 comando o varios comandos independientes, use el parámetro ComputerName de Invoke-Command para especificar los equipos remotos. Use el parámetro ScriptBlock para especificar el comando.

Por ejemplo, el siguiente comando ejecuta el comando Get-Culture en el equipo Server01.

        Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}

El parámetro ComputerName está diseñado para una situación en la que se ejecuta un comando o varios comandos independientes en uno o varios equipos. Para establecer una conexión persistente con un equipo remoto, use el parámetro Session.

CÓMO CREAR UNA CONEXIÓN PERSISTENTE (PSSESSION)

Al usar el parámetro ComputerName del cmdlet Invoke-Command, Windows PowerShell establece una conexión únicamente para el comando. Después cierra la conexión cuando se completa el comando. Todas las variables o funciones definidas en el comando se pierden.

Use el cmdlet New-PSSession para crear una conexión persistente a un equipo remoto. Por ejemplo, el siguiente comando crea PSSessions en los equipos Server01 y Server02; luego, guarda las PSSessions en la variable $s.

        $s = New-PSSession -ComputerName Server01, Server02

CÓMO EJECUTAR COMANDOS EN UNA PSSESSION

Con una PSSession puede ejecutar una serie de comandos remotos que comparten datos, como funciones, alias y los valores de las variables. Para ejecutar comandos en una 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 las PSSessions de 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 la PSSession usa una conexión persistente, puede ejecutar otro comando en la misma PSSession que usa la variable $p. El siguiente comando cuenta el número de procesos que se guardan 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 el nombre de todos 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; después, 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 locales, escriba el nombre del equipo local, escriba un punto (.) o bien 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: Insertar aquí cuerpo de sección.

        Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1

Se devuelven los resultados del script al equipo local. No es necesario copiar los archivos.

CÓMO DETENER UN COMANDO REMOTO

Para interrumpir un comando, presione Control + C. La solicitud de interrupción se pasa al equipo remoto, que finaliza el comando remoto.

PARA OBTENER MÁS INFORMACIÓN

-- Para obtener información sobre los requisitos del sistema para establecer la comunicación remota, consulte about_Remote_Requirements.

-- Para obtener ayuda sobre el formato de la salida remota, consulte about_Remote_Output.

-- Para obtener información sobre cómo funciona la comunicación remota, cómo administrar los datos remotos, las configuraciones especiales, los problemas de seguridad y otras preguntas más frecuentes, consulte about_Remote_FAQ.

-- Para obtener ayuda sobre cómo resolver los errores de comunicación remota, consulte about_Remote_Troubleshooting.

-- Para obtener información sobre las PSSessions y las 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

VEA TAMBIÉN

about_PSSessions

about_Remote_Disconnected_Sessions

about_Remote_Requirements

about_Remote_FAQ

about_Remote_TroubleShooting

about_Remote_Variables

Enter-PSSession

Invoke-Command

New-PSSession