Набросал небольшой скриптец для VMware ESXi, чтобы проверять как давно менялось состояние виртуальных машин. При запуске он заполняет кастомное поле «Power» состоянием и датой, когда это состояние было обнаружено. Кинув в шедулер можно с некоторой точностью понимать, что вот эту виртуалку выключили только вчера, а вот та — выключена уже пару лет (конечно после того как этот скрипт пару лет проверял ее состояние =). Скрипт использует VMware PowerCLI
- Add-PSSnapin VMware.VimAutomation.Core
- Connect-VIServer -Server localhost
- Get-VM | ForEach-Object {
- $vm = $_
- $date = (Get-Date -UFormat "%Y-%m-%d %R").ToString()
- $AnnotationStatus = (Get-Annotation $_ | Where-Object { $_.Name -eq "Power"}).Value
- if ( ($_.PowerState -eq 'PoweredOn') -and ($AnnotationStatus -like 'Down*') ) {
- $vm | Set-Annotation -CustomAttribute "Power" -Value "Up since $date"
- }
- if ( ($_.PowerState -eq 'PoweredOn') -and ($AnnotationStatus -eq '') ) {
- $vm | Set-Annotation -CustomAttribute "Power" -Value "Up since < $date"
- }
- if ( ($_.PowerState -eq 'PoweredOff') -and ($AnnotationStatus -like 'Up*') ) {
- $vm | Set-Annotation -CustomAttribute "Power" -Value "Down since $date"
- }
- if ( ($_.PowerState -eq 'PoweredOff') -and ($AnnotationStatus -eq '') ) {
- $vm | Set-Annotation -CustomAttribute "Power" -Value "Down since < $date"
- }
- }