Нам нужен способ отследить, как долго был отключен виртуальный сервер. Каждую неделю запускается скрипт, собирающий все виртуалы в vcenter. Одно из полей называется Power State. Я пишу сценарий, чтобы использовать последний файл и импортировать все виртуальные машины PoweredOff. Затем я хочу запросить более старые отчеты и посчитать количество файлов, которые появляются в виртуальной машине с состоянием питания PoweredOff.
По сути, это подсчитало бы, сколько недель было отключено питание виртуальной машины.
$source = "C:\inetpub\wwwroot\CSV-Reports-Archive"
# get latest vmreport powered off virtuals
$latest = Get-ChildItem -Path $source | Where-Object {$_.name -like "vmreport*"} | Sort-Object lastaccesstime -Descending | Select-Object -ExpandProperty fullname -First 1
# gather all of the powered off virtuals
$objects = Import-Csv $latest | Select 'vm name', 'power state' | Where-Object {$_.{power state} -eq 'poweredOff'}
# get the rest of the vmreports
$history = Get-ChildItem -Path $source | Where-Object {$_.name -like "vmreport*"} | Sort-Object lastaccesstime | Select-Object -ExpandProperty fullname -SkipLast 1
# search the history of present powered off virtuals
$findings = foreach($file in $history){
foreach($virtual in $objects.{vm name}){
Import-Csv $file | Select 'vm name', 'power state' | Where-Object {($_.{vm name} -Match $virtual)-and($_.{power state} -eq 'poweredoff')}
}
}
Результаты этого в настоящее время дают мне два столбца VM Name & Power State. Обнаружены виртуальные объекты (многократно означает, что найдено более чем в одном файле), я не уверен, как, но я считаю, что мне нужен объект Measure в моем запросе.
Вот чего я пытаюсь достичь:
ServerA 2
ServerB 5
ServerC 1