Seguro que no soy el único administrador de VMware al que en algún momento le ha venido algún compañero con una de las más inocentes preguntas que nos pueden hacer:
"¿cuantas y cuales son las máquinas virtuales hay corriendo en el cluster?". Como podreis adivinar, la tarea no es que sea especialmente complicada, pero si el número de las susodichas es elevado, de una tarea sencilla, pasamos a una tarea tediosa. Pues precisamente esa ha sido la pregunta que me han hecho hoy... así que he decidido tirar de powershell, o para ser más exactos de
PowerCLI, y hacer no un script (que me parecía demasiado engorroso para obtener una simple lista) sino un
OneLiner (es decir, una secuencia de comandos que ocupa una sóla línea). Pues bien, aquí os dejo un oneliner que se encarga de obtener el listado de todas las máquinas virtuales que se estén ejecutando en un cluster determinado:
(Get-View $(Get-Cluster cluster).Id).Host | Foreach-Object {(Get-View $_).Vm | Foreach-Object { (Get-View $_) | Where-Object{$_.Runtime.PowerState -eq 'poweredOn'}} | Select-Object Name }
Donde simplemente teneis que sustituir
cluster por el nombre de vuestro cluster. Recuerdo que el oneliner requiere que hayais establecido previamente una conexión con un virtual center mediante el comando:
Connect-VIServer virtualcenter
Cambiando
virtualcenter por el nombre o la IP de vuestro virtual center
Si en lugar de obtener las máquinas virtuales asociadas a un cluster, quereis saber el nombre de todas las máquinas virtuales que se están ejecutando bajo el control de vuestro virtual center, el oneliner quedaría:
(Get-VMHost | Foreach-Object {Get-View $_.Id}) | Foreach-Object {Get-View $_.Vm | Where-Object {$_.Runtime.PowerState -eq 'poweredOn'}} | Select-Object Name