met powershell alle VMWare windows guest c-disks overlopen en mail sturen bij minder dan 10 giga vrije ruimte

Je wil een mail ontvangen als de vrije ruimte op de c-schijf van een virtuele windows server lager is dan een bepaalde grootte ?

Hieronder vind je de powershell instructie  (gebruikt de powershell cli van VMWare)

Met dank aan Lorenzo voor zijn bijdrage.

 

add-PSSnapin vmware.vimautomation.core

# vCenter username password
$vCenterServer = “…”
$vcenteruser = “…\…”
$vcenterpasswd = “….”
[string]$bodyd = “overzicht virtuele machines , minder dan 10 giga vrije ruimte :  ” + “`r”
$teller=0

#connect vCenter Server
Connect-VIServer -Server $vCenterServer -User $vcenteruser -Password $vcenterpasswd

$FinalResult = @()
$Allvms = Get-View -ViewType “VirtualMachine” -filter @{”Guest.GuestState”=”running”; “Guest.GuestFullName”=”Windows”}
foreach ($vm in $Allvms) {
#Only C disk
$DriveC = $vm.Guest.Disk | Where-Object {$_.Diskpath -eq “C:\”}

#Calculations
$Freespace = [math]::Round($DriveC.FreeSpace / 1MB)
$Capacity = [math]::Round($DriveC.Capacity / 1MB)
$SpaceOverview = “$Freespace” + “/” + “$capacity”
$PercentFree = $freespace
#Report for all vms
$report = New-Object psobject
$report | Add-Member -MemberType NoteProperty -Name “VMName” -Value $VM.Name
$report | Add-Member -MemberType NoteProperty -Name “Free(MB)/Total(MB)” -Value $SpaceOverview
$report | Add-Member -MemberType NoteProperty -Name “%Free” -Value $PercentFree

#VMs with less space on C Drive
if ($report.”%free” -lt 10000)   {
if ($report.”%free” -gt 0) {
$teller = $teller +1
#$finalResult =+ $report
$bodyd = $bodyd + “`r” + $teller + “) ” +  $vm.Name + “`r”+ ”  Overzicht vrije disk ruimte c-drive :  ” + $Freespace + “`r” + ”  Totale capaciteit c-schijf : ” + $Capacity + “`r” + ”  Ipadres : ” + $vm.guest.IpAddress + “`r” + “****************” + “`r”

    }
}
}

#Send Email
$messageParameters = @{
Subject = “Opgelet, onderstaande virtuele servers hebben minder dan 10 giga vrije ruimte op hun systeemschijf. Mvg, Dklus”
Body =  $bodyd
From = “SpacedklusAlert@……”
To = “…”
SmtpServer = “….”
}
Send-MailMessage @MessageParameters

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *