关闭我的批处理文件包装器的Powershell子会话

问题描述 投票:1回答:1

我有一个问题,使用我的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合规性)。

powershell nagios
1个回答
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 -

现在它正常工作。退出代码和脚本输出是正确的。

© www.soinside.com 2019 - 2024. All rights reserved.