使用我的nagios代理(NRPE_NT.exe
)来使用powershell脚本插件时遇到问题。
为了解决这个问题,我创建了底层包装批处理文件:
@ECHO OFF
SET SCRIPTPATH=%~d0%~p0check_process_mem.ps1
SET ARGS=%*
IF [%ARGS%] NEQ [] GOTO ESCAPE_ARGS
:POWERSHELL
PowerShell.exe -NoProfile -NonInteractive -NoLogo -ExecutionPolicy Unrestricted -Command "& { $ErrorActionPreference = 'Stop'; & '%SCRIPTPATH%' @args; EXIT $LASTEXITCODE }" %ARGS%
EXIT /B %ERRORLEVEL%
:ESCAPE_ARGS
SET ARGS=%ARGS:"=\"%
SET ARGS=%ARGS:`=``%
SET ARGS=%ARGS:'=`'%
SET ARGS=%ARGS:$=`$%
SET ARGS=%ARGS:{=`{%
SET ARGS=%ARGS:}=`}%
SET ARGS=%ARGS:(=`(%
SET ARGS=%ARGS:)=`)%
SET ARGS=%ARGS:,=`,%
SET ARGS=%ARGS:^%=%
GOTO POWERSHELL
现在,如果我以对话框用户身份运行它,我没有任何问题,但是如果我使用SYSTEM用户运行它,则PowerShell会话不会关闭,我必须从tasklist
中删除它。
我能做些什么来解决这个问题?
我无法将NRPE_NT.exe
代理更新为NSClient +(PowerShell合规性)。
答案 0 :(得分:1)
我使用powershell插件解决了这个问题,没有包装批处理文件。我以这种方式声明了nrpe.cfg:
command[check_X]=cmd /c echo C:\nrpe\libexec\check_process_mem.ps1 $ARG1$ -VM_w "$ARG2$" -VM_c "$ARG3$" ; exit $($LastExitCode) | powershell.exe -NoProfile -NonInteractive -NoLogo -ExecutionPolicy Unrestricted -command -
现在它正常工作。退出代码和脚本输出是正确的。