Vo fórach sa pomerne často stretávam s problémom zapĺneného datastore (dôvodom sú často “zabudnuté snapshots”). Ak nemáte Enterprise Plus licencie s funkcionalitou Storage DRS a nastavenie percentuálneho zaplnenia datastorov v alarmoch vám nevyhovuje, Ponúkam vám script na sledovanie voľnej kapacity.V podmienkach je zadané:
- FreeSpace menej ako 20 GB
- Nebrať do úvahy konkrétny adresár (v ktorom sú špeciálne datastores)
- Nebrať do úvahy konkrétny Datacenter
ParentFolderID je možné zistiť:
Get-Datastore esx1:datastore1 | Select-Object ParentFolderID
Samotný script zasiela e-mailom tabuľku s informáciami:
- Meno affectovaného datastore
- Voľné miesto na danom datastore
- Zapnuté VMs na danom datastore
- Počet vypnutých VMs na danom datastore
Samotný script:
add-pssnapin VMware.VimAutomation.Core
connect-VIserver -server vc.yourcompany.com
$style = "<style>BODY{font-family:Arial;font-size:10pt;}"
$style = $style + "TABLE{border:1px solid black;border-collapse:collapse;}"
$style = $style + "TH{border:1px solid black;background:#dddddd;padding:5px;}"
$style = $style + "TD{border:1px solid black;padding:5px;}"
$style = $style + "</style>"
$mail = "name@yourcompany.com"
$DSFreeSpace = Get-Datastore | Where-Object { $_.FreeSpaceGB -lt "20" -and $_.ParentFolderID -ne "Folder-group-s000" -and $_.DatacenterID -ne "Datacenter-datacenter-00000" }
$PoweredOnVMs = @{N="Powered on VMs";E={Get-VM -Datastore $_.Name | Where-Object {$_.PowerState -eq "PoweredOn"}}}
$PoweredOffVMsCount = @{N="Powered off VMs(count)";E={(Get-VM -Datastore $_.Name | Where-Object {$_.PowerState -eq "PoweredOff"}).Count}}
if ($DSFreeSpace -ne $null){
$DSFreeSpaceReport = $DSFreeSpace | Select-Object Name,FreeSpaceGB,$PoweredOnVMs,$PoweredOffVMsCount
$DSFreeSpaceReportHTML = $DSFreeSpaceReport | ConvertTo-Html -Head $style
send-mailmessage -from "Name1 <name1@yourcompany.com>" -to $mail -subject "Criticky malo volneho miesta na datastore" `
-BodyAsHtml "$($DSFreeSpaceReportHTML) <br><br><b> <font color=red>POZOR!</b></font> <br><br>Dakujeme<br>Name1" -smtpServer smtpserver.yourcompany.com
}












