Hat jemand eine Verknüpfung oder ein Skript, das PowerShell verwendet, um die geplanten Aufgaben auf einem Server einschließlich der Aktion zu inventarisieren?
Ich bin in der Lage, das com-Objekt Geplanter Dienst und was ich "Top-Level" Eigenschaften (Name, Zustand, Lastruntime) nennen würde, aber auch Informationen aus dem "Aktionen" Teil der Schedule Tasks (im Wesentlichen , der Name der geplanten Aufgabe und seine Befehlszeile).
Zum Beispiel:
%Vor%Das obige Code-Snippet funktioniert in Bezug auf die Auflistung der Aufgaben; aber die Schleife der Aktionen scheint einfach nichts zu tun, keinen Fehler, keine Ausgabe.
Jede Hilfe wäre willkommen.
Das ist wahrscheinlich den aktuellen Antworten sehr ähnlich, aber ich habe ein schnelles Skript geschrieben, um Sie in Schwung zu bringen. Das Problem mit Ihrem aktuellen Skript besteht darin, dass in einer Aufgabe keine Actions
-Eigenschaft vorhanden ist. Sie müssen es aus der XML-Taskdefinition extrahieren, die das Comobject bereitstellt. Das folgende Skript gibt ein Array von Objekten zurück, eines pro geplante Aufgabe. Es enthält die Aktion , wenn die Aktion einen oder mehrere Befehle ausführen soll . Es ist nur, um Sie in Gang zu bringen, also müssen Sie es ändern, um mehr Eigenschaften aufzunehmen, wenn Sie sie brauchen.
Bsp. der Ausgabe
%Vor%Holen Sie sich das PowerShellPack vom W7 RK und versuchen Sie get-targedtask
Auszug aus MSDN:
Das PowerShell Pack für Windows 7 Resource Kit enthält 10 Module, mit denen Sie alle möglichen interessanten Dinge mit PowerShell erledigen können. Import-Module PowerShellPack importiert tatsächlich 10 Module, die Sie verwenden können. Hier ist eine kurze Übersicht über die einzelnen Module.
Ein anderer Weg wäre ein Skript namens Get-ScheduledTask.ps1, das in diesem Artikel verfügbar ist:
Vorgehensweise: Verwenden Sie PowerShell, um geplante Aufgaben zu melden
Auf diese Weise brauchen Sie nur dieses einzelne Skript und Sie müssen nichts anderes herunterladen oder installieren.
Rechnung
Ich weiß, ich bin zu spät zur Party, aber die Antwort von @Frode F., während es funktioniert, ist technisch nicht korrekt.
Sie können über die PowerShell auf Elemente der Actions-Sammlung einer geplanten Aufgabe zugreifen, was nicht sofort offensichtlich ist. Das musste ich heute auch selbst herausfinden.
Hier ist der Code, um dies alles in PowerShell zu tun, ohne mit XML herumzuärgern:
%Vor% Das ist alles, was man braucht, um ein einzelnes Objekt aus der Sammlung zu bekommen, ohne foreach
zu verwenden.
Da die Actions
-Eigenschaft eine Auflistung ist, die eine parametrisierte Eigenschaft Item
enthält (zB in C # würden Sie myTask.Actions[0]
oder in VB myTask.Actions.Item(1)
schreiben), repräsentiert PowerShell die Item
-Eigenschaft als PSParameterizedProperty
Objekt. Um die mit der Eigenschaft verknüpften Methoden aufzurufen, verwenden Sie die Methoden Invoke
(für den Getter) und InvokeSet
(für den Setter).
Ich habe einen kurzen Test mit dem Code des OPs ausgeführt, und es hat für mich funktioniert (ich verwende PowerShell 4.0, also hat das vielleicht etwas damit zu tun):
%Vor%HTH.
Tags und Links powershell scheduled-tasks