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:
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.