我通过此脚本获得了奇怪的输出,以使用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结果的星系?
答案 0 :(得分:1)
请勿使用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
与数字结合使用没有任何意义-数字没有大小写。