Verwendung von PowerShell zur Inventarisierung von geplanten Aufgaben

8

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.

    
Margo Noreen 15.03.2013, 18:21
quelle

4 Antworten

11

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.

%Vor%

Bsp. der Ausgabe

%Vor%     
Frode F. 16.03.2013, 12:48
quelle
1

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.

  • WPK Erstellen Sie umfangreiche Benutzeroberflächen schnell und einfach aus Windows PowerShell. Denke HTA, aber einfach. Über 600 Skripts, mit denen Sie schnelle Benutzeroberflächen erstellen können
  • TaskScheduler Geplante Aufgaben auflisten, Aufgaben erstellen oder löschen
  • Dateisystem Überwachen Sie Dateien und Ordner, suchen Sie nach doppelten Dateien und prüfen Sie den Speicherplatz
  • IsePack Laden Sie Ihre Skripte in der Integrated Scripting Environment mit mehr als 35 Shortcuts
  • auf
  • DotNet Erkunden Sie geladene Typen, finden Sie Befehle, die mit einem Typ arbeiten können, und erkunden Sie, wie Sie PowerShell, DotNet und COM zusammen verwenden können
  • PSImageTools Bilder konvertieren, drehen, skalieren und zuschneiden und Bildmetadaten abrufen
  • PSRSS Nutzen Sie den FeedStore von PowerShell
  • PSSystemTools Informationen zum Betriebssystem oder zur Hardware erhalten
  • PSUserTools Abrufen der Benutzer auf einem System, Prüfen auf Erhöhung und Starten des Prozessadministrators
  • PSCodeGen Generiert PowerShell-Skripts, C # -Code und P / Invoke
mjolinor 15.03.2013 18:27
quelle
1

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

    
Bill_Stewart 15.03.2013 19:02
quelle
0

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.

    
fourpastmidnight 12.06.2015 19:53
quelle

Tags und Links