Reporte de VMs con su promedio de CPU

Cuanto más aprendo PowerCLI, mas quiero aprenderlo y practicarlo. Cada que tengo una oportunidad de usarlo para automatizar o crear reportes en vez de otra herramienta que quizás me pueda brindar lo mismo utilizando el GUI, prefiero forzarme a hacerlo desde la línea de comando – es una buena excusa para practicar y mejorar en este lenguaje.

Recientemente mi jefe me pidió un reporte de las máquinas virtuales que son protegidas con Array Replication; él quería que listara el nombre, CPU, memoria, capacidad de disco asignada y el promedio de uso de CPU de cada VM. Las VMs residen en vCenters independientes pero tienen un común denominador y es que residen and datastores que utilizan un nombre propio, o al menos parte del nombre es igual “RPL”, para fácil distinción obviamente.

Dos de las propiedades que deberían estar en el reporte no me resultaba ponerlas en el reporte de una manera visualmente agradable; agregar ProvisionedSpaceGB resultaba en un numero de muchísimos dígitos y conseguir filtrar el promedio de uso de CPU en la última semana no fue inicialmente fácil.
Gracias a Google y los muchos blogers que sin egoísmo comparten scripts y soluciones, pude encontrar la manera correcta de generar el reporte con un One-liner básicamente.

Quiero dejarlo aquí para mi propia referencia, pero también con la esperanza que alguien más lo encuentre beneficioso.


Get-Datastore RPL* | Get-VM | Select Name,NumCpu,MemoryGB,@{n="Provisionedspace(GB)"; E={[math]::round($_.ProvisionedSpaceGB)}},@{N="CPU Usage (Average), Mhz" ; E={[Math]::Round((($_ | Get-Stat -Stat cpu.usagemhz.average -Start (Get-Date).AddDays(-7) -IntervalMins 5 | Measure-Object Value -Average).Average),2)}} | Export-Csv C:\FileName.csv -NoTypeInformation




Esta parte nos proveé la abilidad de redondear el total de GB envez de presentar un numero con mas de 10 digitos.
@{n="Provisionedspace(GB)";E={[math]::round($_.ProvisionedSpaceGB)}}


Esta parte agrega el premedio de uso de CPU para cada VM en la ultima semana.
@{N="CPU Usage (Average), Mhz" ; E={[Math]::Round((($_ | Get-Stat -Stat cpu.usagemhz.average -Start (Get-Date).AddDays(-7) -IntervalMins 5 | Measure-Object Value -Average).Average),2)}}




No comments:

Post a Comment