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




Tabla de contenido