powershell - 奇怪的结果:很多空格而不是正确的句子 Powershell
问题描述
我用这个脚本得到奇怪的输出来用 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 结果的星系?
解决方案
不要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
与数字结合使用没有任何意义——数字没有大小写。
推荐阅读
- c - Visual Studio:回调函数问题(__cdecl *)
- r - 如何获取列表第一级的变量名称?
- browser - Adobe Sign - 无云
- java - Jackson DateFormatter 设置时区而不更改时间
- python - 有什么类似于 Python 在 c++ 中的索引吗?
- java - 如何清除导航标题视图?
- javascript - CSS 变换旋转仅适用于 Firefox
- angular - “对象”类型上不存在属性“数据”
- powershell - 定期检查日志是否有错误,但要防止发送重复通知
- javascript - 获取未定义表格单元格javascript子项的值