Welcome to Delicate template
Header
Just another WordPress site
Header

PowerShell Remote Cmdlets – Basic

mayo 7th, 2013 | Posted by cristiansan in CLI | PowerShell

-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

You can follow any responses to this entry through the RSS 2.0 You can leave a response, or trackback.

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *