NullReferenceException-Fehler in Powershell

819
rmaan

Ich bin ein Neuling in Power-Shell, ich habe ein Skript geschrieben, das den Prozess gemäß den Parametern in der Befehlszeile anhält. Das Problem ist, wenn ich das Skript in Power Shell ausführt, funktioniert es, aber wenn ich versuche, es von einem Remote-Server mit npre auszuführen, obwohl es den Prozess findet, erhalte ich diesen Fehler:

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 

Mein Skript ist wie folgt:

$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 

Ich muss hinzufügen, dass ich NSClinet ++ verwende, um eine Verbindung zum Server herzustellen, und da es die Prozess-ID zurückholen kann, gehe ich davon aus, dass die Verbindung korrekt ist. Bitte sag mir was fehlt mir?

-1
Dies ist das gesamte Skript? Es wäre hilfreich, wenn Sie angeben, welche Zeile 14 ist. Was haben Sie unternommen, um das Skript zu debuggen? Ramhound vor 9 Jahren 0
Ja das ist das gesamte Skript und Zeile 14 ist (Stop-Process $ arman) rmaan vor 9 Jahren 0
Die Skripte laufen gut von der Powershell-Konsole aus. Es funktioniert nicht, wenn ich es remote ausführe rmaan vor 9 Jahren 0
Bitte richten Sie meine anderen Bedenken an. Ramhound vor 9 Jahren 0
Ich habe alles getan, was ich weiß, ich habe versucht, die Ausführungsrichtlinie festzulegen, den Befehl Invoke, nichts scheint zu funktionieren. Wie gesagt, ich bin ein totaler Neuling in Powershell. Wenn ich mein Skript auf einem lokalen Rechner ausführe, funktioniert es problemlos. Wie Sie an dem Fehler erkennen können, wird er von der Remote-Maschine aus ausgeführt, er kann die Prozess-ID finden, er kann sie einfach nicht stoppen. Ich glaube wirklich, dass es von einer Sicherheitserlaubnis stammt, aber so sehr ich auch gesucht habe, fand ich keine konkrete Antwort. rmaan vor 9 Jahren 0

1 Antwort auf die Frage

0
rmaan

Ich habe die Lösung gefunden.

Das Problem war, dass NSCLient eine lokale Authentifizierung verwendete. Durch Ändern des Benutzers wurde das Problem gelöst.