Как давно выключена эта виртуалка?

Набросал небольшой скриптец для VMware ESXi, чтобы проверять как давно менялось состояние виртуальных машин. При запуске он заполняет кастомное поле «Power» состоянием и датой, когда это состояние было обнаружено. Кинув в шедулер можно с некоторой точностью понимать, что вот эту виртуалку выключили только вчера, а вот та — выключена уже пару лет (конечно после того как этот скрипт пару лет проверял ее состояние =). Скрипт использует VMware PowerCLI

check-vm-powerstate.ps1
 
  1. Add-PSSnapin VMware.VimAutomation.Core
  2. Connect-VIServer -Server localhost
  3. Get-VM  | ForEach-Object {
  4.                         $vm = $_
  5.                         $date = (Get-Date -UFormat "%Y-%m-%d  %R").ToString()
  6.                         $AnnotationStatus =  (Get-Annotation $_ | Where-Object { $_.Name -eq "Power"}).Value
  7.                        
  8.                         if ( ($_.PowerState -eq 'PoweredOn') -and ($AnnotationStatus -like 'Down*') ) {
  9.                             $vm | Set-Annotation -CustomAttribute "Power" -Value "Up since $date"
  10.                         }
  11.                         if ( ($_.PowerState -eq 'PoweredOn') -and ($AnnotationStatus -eq '') ) {
  12.                             $vm | Set-Annotation -CustomAttribute "Power" -Value "Up since  < $date"
  13.                         }
  14.                         if ( ($_.PowerState -eq 'PoweredOff') -and ($AnnotationStatus -like 'Up*') ) {
  15.                             $vm | Set-Annotation -CustomAttribute "Power" -Value "Down since $date"
  16.                         }
  17.                         if ( ($_.PowerState -eq 'PoweredOff') -and ($AnnotationStatus -eq '') ) {
  18.                             $vm | Set-Annotation -CustomAttribute "Power" -Value "Down since < $date"
  19.                         }
  20.                     }