Maksim Kabakou - Fotolia
Wie Sie Aufgaben mit PowerShell planen
Durch PowerShells Automatisierungsfunktion planen Sie Aufgaben einfach und verlässlich und verringern direkt Eingabefehler. Dieser Beitrag erklärt, wie es funktioniert.
Unter Windows ist die Funktion Aufgabenplanung ein wichtiger Punkt für Administratoren. Durch die Aufgabenplanung legen Admins automatisierte Reaktionen auf gewisse Auslöser (Trigger) fest. Die richtige Konfiguration kann sich aber aufwendig gestalten.
Der Vorteil ist, dass sie ein hohes Maß an Komplexität und Kompatibilität mit vielen Sicherheitskontexten durch fein justierbare Auslöseoptionen bieten. Wo jedoch Komplexität herrscht, können Konfigurationsfehler auftreten. Wenn Sie Automatisierungsskripte entwickeln, können Sie PowerShell verwenden, um eine geplante Aufgabe zu erstellen, um den Prozess zu vereinfachen. PowerShell hilft bei der Standardisierung von Verwaltungs- und Konfigurationsarbeiten und bei der Vermeidung typischer Fehler, die durch manuelle Eingaben entstehen.
Wie Sie Aufgabenaktion planen
Eine geplante Aufgabe hat mindestens eine Aktion, einen Auslöser und eine Gruppe zugehöriger Parameter. Nachdem Sie die Aufgabe erstellt haben, müssen Sie sie im System registrieren. Sie müssen jeden der hier aufgeführten Schritte einzeln ausführen, um eine separate geplante Aufgabe zu erstellen.
Verwenden Sie zum Erstellen der Aktion das Cmdlet New-ScheduledTaskAction, das den auszuführenden Befehl angibt. Als Beispiel wird in diesem Artikel eine automatisierte Aufgabe erstellt, die wiederum ein PowerShell-Skript startet.
In unserem Beispiel startet der Befehl die PowerShell-Engine und übergibt ein Skript an die PowerShell-Engine mit allen entsprechenden Befehlszeilenoptionen, damit das Skript nicht interaktiv ausgeführt wird. Die Skriptdatei befindet sich auf dem Computer, auf dem die geplante Aufgabe ausgeführt werden soll.
$Action = New-ScheduledTaskAction -Execute 'pwsh.exe' -Argument '-NonInteractive -NoLogo -NoProfile -File "C:\MyScript.ps1"'
Wie Sie einen Trigger erstellen
Als nächstes benötigen Sie einen Trigger. Es stehen mehrere Werte zur Verfügung, aber in diesem Fall soll das Skript zu einem festen Zeitpunkt ausgeführt werden, nämlich um drei Uhr morgens. Eine vollständige Liste der Optionen finden Sie in der Hilfe zum Cmdlet New-ScheduledTaskTrigger.
$Trigger = New-ScheduledTaskTrigger -Once -At 3am
So erstellen Sie Einstellungen
Erstellen Sie dann den geplanten Task mit dem Befehl New-ScheduledTask. Dieser Befehl benötigt einen Wert für den Settings-Parameter, auch wenn Sie keine speziellen Einstellungen benötigen. Um einen Setting-Parameter zu setzen, führen Sie New-ScheduledTaskSettingsSet aus, um ein Objekt zu erstellen.
$Settings = New-ScheduledTaskSettingsSet
So erstellen Sie die geplante Aufgabe
Nachdem Sie alle Objekte als Variablen zugewiesen haben, übergeben Sie jede dieser Variablen an den Befehl New-ScheduledTask, um ein geplantes Aufgabenobjekt zu erstellen.
$Task = New-ScheduledTask -Action $Action -Trigger $Trigger -Settings $Setting
Wie Sie die geplante Aufgabe registrieren
Zu diesem Zeitpunkt haben Sie ein geplantes Aufgabenobjekt im Memory erstellt. Um die geplante Aufgabe dem Computer hinzuzufügen, müssen Sie die geplante Aufgabe mit dem Cmdlet Register-ScheduledTask registrieren.
Im folgenden Beispiel wird eine geplante Aufgabe registriert, die unter einem bestimmten Benutzernamen ausgeführt werden soll. Um die Aufgabe für einen bestimmten Benutzer auszuführen, müssen Sie das Kennwort des Benutzers angeben. In der Dokumentation zum Befehl Register-ScheduledTask finden Sie alle für dieses Cmdlet verfügbaren Optionen.
Register-ScheduledTask -TaskName 'My PowerShell Script' -InputObject $Task -User 'Benutzername' -Password 'Passwort'
Wenn Sie alle Schritte korrekt ausgeführt haben, sollten Sie Ihre neu erstellte geplante Aufgabe im Aufgabenplaner sehen (Abbildung 1).
Nachdem die geplante Aufgabe registriert wurde und im Aufgabenplaner angezeigt wird, können Sie nun das Cmdlet Get-ScheduledTask ausführen, um die Aufgabe in PowerShell anzuzeigen.
PS C:\> Get-ScheduledTask -TaskName 'My PowerShell Script'
TaskPath TaskName State
-------- -------- -----
\ My PowerShell Script Ready