我是 power-shell 的新手,我编写了一个根据命令行中的参数停止进程的脚本。问题是当我在 power shell 中运行该脚本时它可以工作,但是当我尝试使用 npre 从远程服务器运行它时,即使它找到了进程,我还是会收到此错误:
The retrived Process ID fro test.bat is 9468
Stop-Process : Object reference not set to an instance of an object.
At C:\Program Files\NSClient++\scripts\Kill_Java.ps1:14 char:13
+ Stop-Process <<<< $arman
+ CategoryInfo : NotSpecified: (:) [Stop-Process], NullReferenceE
xception
+ FullyQualifiedErrorId : System.NullReferenceException,Microsoft.PowerShe
ll.Commands.StopProcessCommand
我的脚本如下:
$servicename=$args[0]
$processid = get-wmiobject -query "select * from win32_process where CommandLine like '%$servicename%' and name='notepad.exe'" | Select-Object Handle | Out-File test.txt
If ((Get-Content "test.txt") -eq $Null) {
"File is blank"
} else {$a = Get-Content test.txt
$arman=$a[3]
write-host The retrived Process ID fro "$servicename" is "$arman"
Stop-Process $arman
}
exit 3
我必须补充一点,我正在使用 NSClinet++ 连接到服务器,由于它能够检索进程 ID,因此我认为连接是正确的。请告诉我我遗漏了什么?
答案1
我找到了解决方案。
问题在于 NSCLient 使用本地身份验证,更改用户即可解决问题。