-Computername
PowerShell permite la gestión de maquinas remotas mediante el uso del parámetro –Computername. Solo algunos comandos son capaces de trabajar con este parámetro. Podemos utilizar una el siguiente comando para obtener la lista de cmdlets capaces de trabajar con este paramétro.
Get-Help * -Parameter computername | Format-Wide -Column 2
Nota: Cmdlets PSSESION requieren de PowerShell v2
Recordard que el firewall debe estar configurado para aceptar las conexiones. Podemos habilitar el mismo para ello, ejecutando:
netsh firewall set service RemoteAdmin
netsh advfirewall set currentprofile settings remotemanagement enable
Ejemplo.
Local: Get-Service winRM
Remoto: Get-Service –name winRM –computername Win2008Lab
Para realizar la consulta sobre un grupo concreto de maquinas, podemos utilizar el siguiente código:
#$computers = Get-content c:\Path\file.txt
$computers = @(“VM1”, “VM2”, “VM3”);
Get-wmiObject –class win32_Service –Filter “name=’winrm’” –computername $computers
PSSesion
PowerShell puede utilizar el servicio WinRM para crear conexiones remotas (ver WS-management). Debemos tener en cuenta que para utilizar los cmdlets pssesion debemos…
- WinRM debe estar instalado y corriendo en los servidores
- PowerShell v2 debe estar instalado en los servidores
- Debe ejecutar-se en cada máquina Enable-PSremoting, este configura WinRM el firewall y los elementos necesarios para el acceso remoto.
Para crear una conexión remota ejectuaremos:
$session = New-PSSession -ComputerName VM1, VM2
Podemos ver entornos las sesiones establecidas con “Get-PSsesion”
Una vez establecida la conexión, para ejecutar un comando de forma remota ejecutaremos:
Invoke-command –Session $session –ScriptBlock {get-service}
Si abrimos varias conexiones, cada conexión dispone de un ID, visible desde get-session. Para ejecutar un comando remoto sobre una conexión concreta…
Definimos el ID en una variable
$idS = Get-Pssesion –id 2
Ejecutamos el comando invoke-command utilizando $ids como argumento para el parámetro –session.
Para cortar/finalizar la conexión ejecutaremos:
Get-PSsesion | remove-PSSesion
Get-PSSesion –id 2 | remove-PSSesion