Странный результат: много пробелов вместо правильного предложения Powershell - PullRequest
0 голосов
/ 25 сентября 2018

Я получаю странные результаты с помощью этого скрипта для отслеживания теневых копий с помощью nagios

Если я запускаю этот скрипт:

$runs = Get-ScheduledTaskInfo -TaskName "ShadowCopyVolume{eff29848-ac44-11e8-80b1-806e6f6e6963}" | Format-Wide -Property NumberOfMissedRuns

if ($runs -cmatch "0")
{
Write-host ok
exit 0
}
else
{
Write-Output "missed" $runs "runs"
exit 1
}

Результат для этого:

PS C:\Program Files\NSClient++\scripts> C:\Program Files\NSClient++\scripts\check_scopy.ps1
missed


0                                                                                                                                                                                                                                                                


runs

Это очень много места впустую.

Так что любые предложения, чтобы сделать его правильным предложением, а не галактикой исхода PS ??

1 Ответ

0 голосов
/ 25 сентября 2018

Не используйте Format-* для выбора одного свойства.Либо используйте:

$runs = Get-ScheduledTaskInfo -TaskName "ShadowCopyVolume{eff29848-ac44-11e8-80b1-806e6f6e6963}" | 
    Select-Object -Expandproperty NumberOfMissedRunS

Или короче:

$runs = (Get-ScheduledTaskInfo -TaskName "ShadowCopyVolume{eff29848-ac44-11e8-80b1-806e6f6e6963}").NumberOfMissedRuns

Свойство NumberOfMissedRuns имеет тип uint32, поэтому простое:

if ($runs){"missed {0} runs" -f $runs} else {write-Host "ok"}

должно вернутьжелаемый результат.

Кстати, использование -cmatch в сочетании с числом не имеет никакого смысла - числа не имеют регистра.

...