为什么我的Powershell脚本在Nagios NRPE运行时会回复额外的输出?

我有一个Powershell脚本,我通过nrpe作为外部脚本运行。 Windows服务器(2008)运行nsclient ++(nscp.exe)v 0.4.1.102。

我的powershell脚本的返回部分看起来像这样

} else { write-host "ok $queue|queue = $queue" exit 0 } 

调用ps1文件的包装脚本如下所示:

 ps1 = cmd /c echo C:\\NetAdmin\\%SCRIPT% %ARGS%; exit($lastexitcode) | powershell.exe -command - 

如果我从Windows命令提示符运行这个输出看起来像这样:

 ok 93|queue = 93 

但是当我运行从我的nagios服务器使用check_nrpe输出变为:

 ok 93|'queue''=0 '93'=0 

Nagios在处理性能数据时遇到问题。

更新:在提交错误报告后,软件作者回应说这是期望的行为,但在nsclient.ini中有两个选项可禁用它:

全球(所有脚本)

 [/settings/external scripts/scripts/default] ignore perfdata = true 

单个脚本

 [/settings/external scripts/scripts/check_foo] ignore perfdata = true 

您应该尝试删除= sign周围的多余空格:

 write-host "ok $queue|queue=$queue" 

现在我无法在这个版本的nsclient++上解释这种行为。 这种情况在v0.3.8.76以前的版本中没有发生过,就像魅力一样(至less按照预期没有意外)。

似乎nsclient++将空间扩展为值为0的数据。 这可能是一个错误或想要的行为。

我实际上是在网上search一些线索,并试图分析源代码。