Ошибка NullReferenceException в powershell

728
rmaan

Я новичок в 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 ++ для подключения к серверу, и, поскольку он может получить идентификатор процесса, я предполагаю, что соединение правильное. Пожалуйста, скажите мне, что мне не хватает?

-1
Это весь сценарий? Было бы полезно, если бы вы указали, какая строка равна 14. Что вы сделали для отладки скрипта? Ramhound 9 лет назад 0
Да, это весь сценарий и строка 14 (Stop-Process $ arman) rmaan 9 лет назад 0
Сценарии работают нормально с консоли PowerShell, он не работает, когда я запускаю его удаленно rmaan 9 лет назад 0
Пожалуйста, рассмотрите мои другие проблемы. Ramhound 9 лет назад 0
Я сделал все, что я знаю, я попытался установить политику выполнения, вызвать команду, ничего не работает. Как я уже сказал, я полностью новичок в PowerShell, когда я запускаю свой скрипт на локальной машине, он работает без проблем. даже как вы можете видеть из ошибки, он запускается с удаленной машины, он может найти идентификатор процесса, просто не может его остановить. Я действительно думаю, что это может быть из разрешения безопасности, но сколько бы я ни искал, я не нашел никакого конкретного ответа. rmaan 9 лет назад 0

1 ответ на вопрос

0
rmaan

Я нашел решение.

Проблема заключалась в том, что NSCLient использовал локальную аутентификацию, и изменение пользователя решило проблему.