viernes, 6 de agosto de 2010

Acceso remoto con PowerShell - I

PowerShell permite la ejecución en remoto de determinados comandos. Algunos de los cmdlets de PowerShell disponen del parámetro "ComputerName" que permiten la ejecución del cmdlet en un equipo remoto. Para ver un listado de todos los cmdlets con ese parámetro, ejecutar:

get-command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}

Estos cmdlets no se basan en la comunicación remota de Windows PowerShell, por lo que podemos ejecutar estos cmdlets en máquinas remotas incluso si el equipo no está configurado para la ejecución de comandos remotos.

Ahora, se tienen que cumplir dos condiciones para poder ejecutar estos cmdlets sobre una máquina remota.

1) La persona que ejecuta el cmdlet tiene que tener permisos adminsitrativos en la máquina remota.
2) Se hace uso del protocolo RPC, por lo que se necesita el puerto TCP 135 abierto en la máquina remota.

Ejemplos:

Restart-Computer -computerName DC01

Para reiniciar varios equipos a la vez:

$pcs=@("Pc1",Pc2","Pc3")
Restart-Computer -computerName $pcs


Aunque esta posibilidad de ejecutar comandos en máquinas remotas es interesante, el número de cmdlets que podemos usar es muy pequeño, por lo que pocas veces haremos uso de esta funcionalidad (quizás el cmdlet más interesante aquí es Get-WmiObject).

Si queremos ejecutar cmdlets en remoto haremos uso de WinRM y estableceremos sesiones remotas.

No hay comentarios:

Publicar un comentario