Ejemplos sencillos y útiles con Powershell y SCVMM

 

Cuantas veces me he encontrado con un entorno donde de repente hay que cambiar configuraciones en un montón de VMs, pues bien, gracias a PowerShell y SCVMM es facilísimo realizar estos cambios en muchas VMs a la vez.

En estos ejemplos voy a cambiar las configuraciones en todas las VMs de un host concreto, pero por supuesto podria hacerse en todas las que cumplan una condición concreta o en todas las VMs de un grupo de hosts, etc.

Hay dos maneras de ejecutar un script o comando powershell que use SCVMM:

Desde la consola de SCVMM abriendo la shell:

image

Desde un script powershell o desde una consola cualquiera importando la snapin de SCVMM

Add-PSSnapin Microsoft.SystemCenter.VirtualMachineManager
get-vmmserver -ComputerName TuServidorSCVMM

(ojo, para poder añadir el snapin tienes que tener instalada la consola de SCVMM)

Y ahora los ejemplos:

Quitar las optimizaciones de red en todas las tarjetas de red de las VMs de un host:

get-vm |where-object {$_.HostName -eq "NombreDelHost"} | get-virtualnetworkadapter |Set-VirtualNetworkAdapter -VMNetworkOptimizationEnabled $False

Configurar todas las VMs de un host para que puedan migrar con live migration a hosts con diferente procesador:

get-vm |where-object {$_.HostName -eq "NombreDelHost"} | set-vm -LimitCPUForMigration $True

Este ejemplo es especialmente útil por que puedes fácilmente modificarlo para que cambie el centro de coste, la ram o cualquier otro parametro de las VMs.

Para saber como se llama una propiedad para poder utilizarla en tus comandos puedes simplemente usar el comando get-vm NombreVM para ver todos los nombres de propiedades y sus valores concretos para la VM especificada.

 image