Automatisieren von PowerShell-Skripts mit der Aufgabenplanung

Mit der Aufgabenplanung von Microsoft Windows können Sie festlegen, dass ein Programm oder PowerShell-Skript zu einem bestimmten Zeitpunkt oder unter bestimmten Bedingungen automatisch gestartet wird. Sie können damit auch das Versenden von E-Mails und sogar das Anzeigen bestimmter Meldungen planen. In diesem Artikel zeigen wir Ihnen, wie Sie mit der Aufgabenplanung ein PowerShell-Skript ausführen, das Sie benachrichtigt, wenn Software auf einem lokalen Rechner installiert wird.

Sie werden außerdem mithilfe von PowerShell-Skripts geplante Aufgaben erstellen. Sie erfahren, wie Sie:

  • Aufgaben mit der Aufgabenplanung erstellen
  • geplante Aufgaben ändern oder löschen
  • geplante Aufgaben mit PowerShell-Skripts erstellen

Erstellen von Aufgaben mit der Aufgabenplanung

Öffnen Sie die Aufgabenplanung, indem Sie „Windows+R“ drücken und in dem angezeigten Fenster „taskschd.msc“ eingeben. Führen Sie dann die folgenden Schritte aus:

1. Klicken Sie auf „Aufgabe erstellen“ und geben Sie einen Namen und eine Beschreibung für die neue Aufgabe ein. Um das Programm mit Administratorrechten auszuführen, aktivieren Sie das Kontrollkästchen „Mit höchsten Privilegien ausführen“. In unserem Beispiel weisen wir die Ausführung der Aufgabe einem Dienstkonto zu. Die Aufgabe soll unabhängig davon ausgeführt werden, ob der Benutzer angemeldet ist.

2. Wechseln Sie zur Registerkarte „Trigger“ und klicken Sie auf die Schaltfläche „Neu…“. Hier können Sie die Bedingungen angeben, die die Aufgabe auslösen. Sie können beispielsweise festlegen, dass die Aufgabe nach einem Zeitplan, bei der Anmeldung, beim Leerlauf, beim Start oder bei einem bestimmten Ereignis ausgeführt wird. Die Aufgabe soll ausgelöst werden, wenn neue Software installiert wird. Wählen Sie deshalb in der Dropdown-Liste „Bei einem Ereignis“ und anschließend in der Dropdown-Liste „Protokoll“ den Eintrag „Anwendung“. Lassen Sie das Feld für den Parameter „Quelle“ leer und geben Sie für die Einstellung „Ereignis-ID“ den Wert „11707“ ein. Klicken Sie auf „OK“, um die Änderungen zu speichern.

3. Wechseln Sie zur Registerkarte „Aktionen“ und klicken Sie auf „Neu…“. Hier können Sie die Aktionen angeben, die ausgeführt werden, wenn die zuvor festgelegten Bedingungen erfüllt sind. Sie können zum Beispiel eine E-Mail senden oder eine Meldung anzeigen. In unserem Beispiel soll ein Programm gestartet werden. Sie müssen deshalb das PowerShell-Skript erstellen, das ausgeführt werden soll, und mit der Erweiterung „ps1“ speichern. Das Skript können Sie hier abrufen; es sendet eine Benachrichtigung mit den Ereignisdetails zur installierten Software.

Um die Ausführung des PowerShell-Skripts zu planen, geben Sie die folgenden Parameter an:

  • Aktion: Programm starten
  • Programm/Skript: powershell
  • Argumente hinzufügen (optional): -File [Geben Sie hier den Dateipfad zum Skript an]

Klicken Sie auf „OK“, um Ihre Änderungen zu speichern.

4. Auf der Registerkarte „Bedingungen“ können Sie die Bedingungen angeben, die zusammen mit dem Trigger festlegen, ob die Aufgabe ausgeführt werden soll. Übernehmen Sie für unser Beispiel die Standardeinstellungen auf dieser Registerkarte.

5. Sie können außerdem weitere Parameter für Ihre geplante Aufgabe auf der Registerkarte „Einstellungen“ bestimmen. Für unser Beispiel nehmen wir keine weiteren Änderungen vor.

6. Wenn die Einrichtung der Aufgabe abgeschlossen ist, werden Sie vom System aufgefordert, das Kennwort für das Dienstkonto einzugeben. Beachten Sie dabei, dass dieses Konto über das Recht „Anmelden als Stapelverarbeitungsauftrag“ verfügen muss. Geben Sie das Kennwort ein und klicken Sie auf „OK“, um die Aufgabe zu speichern.

7. Damit die Aufgabenplanung ordnungsgemäß funktioniert, muss der Dienst so eingerichtet sein, dass er die Ausführung von „Services.msc“ startet. Suchen Sie in der Liste der Dienste die Aufgabenplanung und doppelklicken Sie darauf. Wählen Sie auf der Registerkarte „Allgemein“ als Starttyp die Option „Automatisch“ und klicken Sie auf „OK“, um Ihre Änderungen zu speichern.

Sie werden nun per E-Mail benachrichtigt, sobald neue Software auf Ihrem Microsoft Windows-Server installiert wird. Die E-Mail enthält Angaben zum Zeitpunkt der Installation, zum Namen der Software und zur Benutzer-ID (SID) der Person, die die Installation vorgenommen hat.

Ändern oder Löschen geplanter Aufgaben

Um eine vorhandene Aufgabe zu ändern, klicken Sie mit der rechten Maustaste auf die gewünschte Aufgabe in der Liste, wählen Sie „Eigenschaften“, bearbeiten Sie die erforderlichen Einstellungen und klicken Sie auf „OK“. Um eine geplante Aufgabe zu löschen, klicken Sie mit der rechten Maustaste darauf, wählen Sie „Löschen“ und bestätigen Sie den Löschvorgang.

Erstellen geplanter Aufgaben mit PowerShell-Skripts

Sie wissen nun, wie Sie mit der Aufgabenplanung eine Aufgabe erstellen. Als Nächstes werden Sie mithilfe von PowerShell eine geplante Aufgabe erstellen. Angenommen, Sie möchten eine Aufgabe täglich um 10:00 Uhr starten lassen und damit das PowerShell-Skript ausführen, das Sie hier abrufen können. Das Skript überwacht Änderungen an der Gruppenzugehörigkeit am Active Directory-Standort.

In Windows Powershell 2.0 (Windows 7, Windows Server 2008 R2) müssen Sie das Modul TaskScheduler verwenden, um einen geplanten Auftrag zu erstellen. Installieren Sie das Modul, indem Sie den Befehl „Import-Module TaskScheduler“ ausführen, und erstellen Sie mit dem folgenden Skript eine Aufgabe, die das PowerShell-Skript „GroupMembershipChanges.ps1“ täglich um 10:00 Uhr ausführt:

Import-Module TaskScheduler $task = New-Task
$task.Settings.Hidden = $true
Add-TaskAction -Task $task -Path C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe –Arguments “-File C:\Scripts\GroupMembershipChanges.ps1”
Add-TaskTrigger -Task $task -Daily -At “10:00”
Register-ScheduledJob –Name ”Monitor Group Management” -Task $task

In Windows PowerShell 4.0 (ab Windows Server 2012 R2) ist das Modul TaskScheduler nicht enthalten. Daher funktioniert dieses Skript in diesen Versionen auch nicht. PowerShell 3.0 und 4.0 enthalten stattdessen die neuen Cmdlets „New-ScheduledTaskTrigger“ und „Register-ScheduledTask“, mit denen sich geplante Aufgaben wesentlich einfacher und bequemer erstellen lassen. Sie erstellen nun eine Aufgabe, mit dem das Skript täglich um 10:00 Uhr über das Systemkonto (SYSTEM) ausgeführt wird. Diese Aufgabe wird über ein Konto mit erhöhten Rechten ausgeführt.

$Trigger= New-ScheduledTaskTrigger -At 10:00am –Daily # Specify the trigger settings
$User= "NT AUTHORITY\SYSTEM" # Specify the account to run the script
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\PS\StartupScript.ps1" # Specify what program to run and with its parameters
Register-ScheduledTask -TaskName "MonitorGroupMembership" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force # Specify the name of the task

Weitere Trigger-Optionen, die bei der Erstellung neuer Aufgaben hilfreich sind:

  • -AtStartup: Löst die Aufgabe beim Starten von Windows aus.
  • -AtLogon: Löst die Aufgabe aus, wenn sich der Benutzer anmeldet.
  • -Once: Löst die Aufgabe unmittelbar aus. Mit dem Parameter „–RepetitionInterval“ können Sie ein Wiederholungsintervall festlegen.
  • -Weekly: Löst die Aufgabe einmal wöchentlich aus.

Beachten Sie bitte, dass es mit diesen Cmdlets nicht möglich ist, die Ausführung einer Aufgabe wie mit der Aufgabenplanung „bei einem Ereignis“ auszulösen. PowerShell-Skripts mit einem Trigger „bei einem Ereignis“ sind wesentlich komplizierter. Daher ist es in diesem Fall sinnvoller, anstelle von PowerShell die Aufgabenplanung zu verwenden.

Zusammenfassung

Wie Sie sehen können, ermöglichen die Aufgabenplanung und PowerShell ein einfaches Erstellen von geplanten Aufgaben. Denken Sie jedoch stets daran, dass unsachgemäße Änderungen an geplanten Aufgaben zur Unterbrechung von Diensten führen und die Serverleistung beeinträchtigen können. Daher sollten Sie alle Änderungen an geplanten Aufgaben stets überwachen.

Tutorial zur Skripterstellung  mit Windows PowerShell für Einsteiger