TwitterLinkedInEmail
formats

PowerShell Reporting VMware con powercli

En el siguiente script de powercli nos conectamos a Vcenter para controlar varios items de las VM centrando un poco la atencion al espacio en disco y en caso de tener menos del 10% sacar un warning.

Toda la informacion se almacena en un excel donde con una tarea de windows podremos ver el progreso mas adelante del consumo de disco de las VMs.

 

 

 

#realizamos la conexion con el nodo o con VCenter como es mi caso (con el nodo usuario root)

Connect-VIServer 192.168.1.XXX -user administrator@vsphere.local -password XXXX
#Metemos todo en un array vacio
$report = @()
#puntero para ver si entramos en el bucle opcional
$i= 0

#recorremos nuestras vm con el listado que sacamos del get-vm 

foreach($vm in (Get-VM)){
$i= $i + 1
$discos = $VM.Guest.Disks
# Array para los  VMDK
$discoVM = @(Get-HardDisk -VM $vm)
#variable para recorrer el Array
$k = 0
# recorremos discos por vm
foreach ($Disk in $discos){

# cabecera del Excel
$row = “” | Select Fecha,Hora,Hostname, VM, GuestName, IP, Datastore, VMXpath, HardDisk, Unidad, CapacityGB, DiskFreespace, ProvisionType, espaciolibre
#contenido de informacion de las celdas
$row.Fecha = get-date -Format d
$row.Hora = Get-Date -UFormat %r
$row.Hostname = $vm.VMHost.Name
#Etiqueta maquina la que aparece en el inventario
$row.VM = $VM.Name
#nombre maquina
$row.GuestName = $vm.Guest.HostName

$row.IP = $VM.Guest.IPAddress
$row.Datastore = $discoVM[$k].Filename.Split(“]”)[0].TrimStart(“[“)
$row.VMXpath = $discoVM[$k].FileName
$row.HardDisk = $discoVM[$k].Name
$row.Unidad = $disk.Path
$row.CapacityGB = [math]::Round(($Disk.CapacityGB),2)
$row.DiskFreespace = [math]::Round(($Disk.FreeSpaceGB),2)
$row.ProvisionType = $discoVM[$k].StorageFormat
$estadodisco = [math]::Round((100*($row.DiskFreespace))/$row.CapacityGB)

#Hacemos una condicion para que si el espacio libre es menor al 10% nos printe en la casilla del excel un aviso, si no pues unicamente el %

if ($estadodisco -lt 10) {
$row.espaciolibre = “Warning ” + $estadodisco + ” %”
}
else {
$row.espaciolibre = “” + $estadodisco + ” %”}

if ($discoVM.Count -gt “1”) {
$k=$k+1}
else {$k=0}
$k
$report += $row
#$i
}
}
$report | Export-Csv -Path C:\Report.csv -NoTypeInformation -UseCulture -Append

cls

 

 

 

Mi mas sentido reconocimiento a mi compañero Juan Jose Leon que dio luz a mis ralladas con el codigo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

2 × tres =

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

CyberChimps