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