Windows PowerShell Remoting
La comunicación remota de Windows PowerShell, que utiliza el protocolo WS-Management, le permite ejecutar cualquier comando de Windows PowerShell en una o varias computadoras remotas. Le permite establecer conexiones persistentes, iniciar sesiones interactivas 1: 1 y ejecutar scripts en varias computadoras. Para usar la comunicación remota de Windows PowerShell, la computadora remota debe estar configurada para la administración remota. Después de configurar la comunicación remota de Windows PowerShell, tendrá a su disposición muchas estrategias de comunicación remota. El resto de este documento enumera solo algunos de ellos.
Comience una sesión interactiva
Para iniciar una sesión interactiva con una sola computadora remota, use el cmdlet Enter-PSSession. Por ejemplo, para iniciar una sesión interactiva con la computadora remota Server01, escriba:
Enter-PSSession Server01
El símbolo del sistema cambia para mostrar el nombre de la computadora a la que está conectado. A partir de ese momento, cualquier comando que escriba en el indicador se ejecutará en la computadora remota y los resultados se mostrarán en la computadora local.
Para finalizar la sesión interactiva, escriba:
Exit-PSSession
Ejecute un comando remoto
Para ejecutar cualquier comando en una o varias computadoras remotas, use el cmdlet Invoke-Command. Por ejemplo, para ejecutar un comando Get-UICulture en las computadoras remotas Server01 y Server02, escriba:
invoke-command -computername Server01, Server02 {get-UICulture}
La salida se devuelve a su computadora.
LCID Name DisplayName PSComputerName
---- ---- ----------- --------------
1033 en-US English (United States) server01.corp.fabrikam.com
1033 en-US English (United States) server02.corp.fabrikam.com
Ejecutar un script
Para ejecutar un script en una o varias computadoras remotas, use el parámetro FilePath del cmdlet Invoke-Command. El script debe estar activado o accesible para su computadora local. Los resultados se devuelven a su computadora local.
Por ejemplo, el siguiente comando ejecuta el script DiskCollect.ps1 en las computadoras remotas Server01 y Server02.
invoke-command -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1
Establecer una conexión persistente
Para ejecutar una serie de comandos relacionados que comparten datos, cree una sesión en la computadora remota y luego use el cmdlet Invoke-Command para ejecutar comandos en la sesión que cree. Para crear una sesión remota, use el cmdlet New-PSSession.
Por ejemplo, el siguiente comando crea una sesión remota en la computadora Server01 y otra sesión remota en la computadora Server02. Guarda los objetos de sesión en la variable $ s.
$s = new-pssession -computername Server01, Server02
Ahora que las sesiones están establecidas, puede ejecutar cualquier comando en ellas. Y debido a que las sesiones son persistentes, puede recopilar datos en un comando y usarlos en un comando posterior.
Por ejemplo, el siguiente comando ejecuta un comando Get-Hotfix en las sesiones en la variable $ s y guarda los resultados en la variable $ h. La variable $ h se crea en cada una de las sesiones en $ s, pero no existe en la sesión local.
invoke-command -session $s {$h = get-hotfix}
Ahora puede usar los datos en la variable $ h en comandos posteriores, como el siguiente. Los resultados se muestran en la computadora local.
invoke-command -session $s {$h | where {$_.installedby -ne "NTAUTHORITY\SYSTEM"} }