Get-CimInstance funktioniert nicht, wenn es von Scheduled Task ausgeführt wird

592
mwolfe02

Ich habe ein Powershell-Skript, das mit dem folgenden Befehl eine Liste aller Dienste auf meinem lokalen Computer exportiert:

Get-CimInstance win32_service | Export-Csv $PSScriptRoot\Local\services.csv 

Es funktioniert gut, wenn ich es unter einem lokalen Administratorkonto über eine Powershell-Eingabeaufforderung ausführe. Ich habe versucht, es als geplante Aufgabe auszuführen, das gleiche lokale Administratorkonto zum Ausführen der geplanten Aufgabe zu verwenden, und nichts wird in die CSV-Datei ausgegeben.

Ich weiß, dass die geplante Task selbst ausgeführt wird, da andere Ausgabedateien wie erwartet aktualisiert werden. Was ist anders, wenn Sie dieses Skript als geplante Aufgabe ausführen, bei der es beschädigt wird?

UPDATE : Ich habe das Skript in beide Richtungen ausgeführt, während ProcMon im Hintergrund ausgeführt wurde. Der einzige Unterschied, den ich feststellte, ist, dass der Prozess der geplanten Aufgabe eine Sitzungs-ID von 0 hatte, während das Skript beim Ausführen direkt eine Sitzungs-ID von 4 hatte.

1

1 Antwort auf die Frage

1
mwolfe02

Ich denke, das Problem ist, dass ich die Aufgabe mit dem Ziel gekennzeichnet hatte:

(o) Führen Sie aus, ob der Benutzer angemeldet ist oder nicht

Laut Microsoft ,

Sie können angeben, dass eine Task ausgeführt werden soll, auch wenn das Konto, unter dem die Task geplant ist, nicht angemeldet ist, wenn die Task ausgelöst wird. Wählen Sie dazu das Optionsfeld Ausführen, ob der Benutzer angemeldet ist oder nicht . Wenn dieses Optionsfeld ausgewählt ist, werden Aufgaben nicht interaktiv ausgeführt. Um eine Aufgabe interaktiv auszuführen, wählen Sie das Optionsfeld Nur ausführen, wenn der Benutzer angemeldet ist .

Der Schlüssel dazu ist dieser Satz:

Um eine Aufgabe interaktiv auszuführen, wählen Sie das Optionsfeld Nur ausführen, wenn der Benutzer angemeldet ist .

Ich vermute, dass Powershell interaktiv ausgeführt werden muss, damit das Get-CimInstanceCmdlet ordnungsgemäß ausgeführt wird. Ich habe meine Aufgabe nur in " Ausführen" geändert, wenn der Benutzer angemeldet ist und alles jetzt zu funktionieren scheint.