Wie Sie Aufgaben mithilfe der PowerShell-Skriptautomatisierung optimieren
PowerShell ist ein ziemlich leistungsstarkes Tool zur Steuerung von Prozessen, Automatisierung von Aufgaben und vielem mehr unter Windows. Kurz gesagt: Wenn Sie Skripte automatisch ausführen möchten – beispielsweise für Backups, Updates oder die routinemäßige Wartung – ist PowerShell dafür bestens geeignet. Der Haken an der Sache ist jedoch die Windows-Sicherheitsmaßnahme namens Ausführungsrichtlinie. Diese fungiert quasi als Türsteher und blockiert die Ausführung unsignierter Dateien oder Skripte aus dem Internet, sofern Sie keine Ausnahmen explizit zulassen. Das kann lästig sein, insbesondere wenn Sie einfach nur Automatisierungen einrichten möchten, ohne ständig auf „Ja“ klicken oder Einstellungen manuell ändern zu müssen.
Also, folgendes: Zuerst müssen Sie die Ausführungsrichtlinie anpassen und dann den Zeitplan einrichten. Andernfalls werden Ihre Skripte entweder gar nicht ausgeführt oder blockiert, was extrem ärgerlich ist. Es gibt außerdem verschiedene Möglichkeiten, diese Skripte zu automatisieren – entweder über die grafische Benutzeroberfläche der Aufgabenplanung für weniger technikaffine Nutzer oder direkt über PowerShell, falls Sie mit Cmdlets vertraut sind. In jedem Fall sollten diese Schritte Ihnen helfen, Ihre Skripte problemlos automatisch auszuführen (oder zumindest den Aufwand zu reduzieren).Beachten Sie jedoch, dass Sie je nach Ihren Sicherheitsrichtlinien möglicherweise Administratorrechte oder zusätzliche Berechtigungen benötigen.
Wie automatisiert man PowerShell-Skripte?
Korrigieren Sie zunächst die Ausführungsrichtlinie, damit Skripte ausgeführt werden können.
Diese Einstellung blockiert in den meisten Fällen die Ausführung Ihrer Skripte. Es mag seltsam klingen, aber wenn die Ausführungsrichtlinie auf „Eingeschränkt“ gesetzt ist (was üblicherweise der Standardwert ist), führt PowerShell keine unsignierten Skripte aus. Daher müssen Sie diese Sicherheitseinstellung kontrolliert lockern, idealerweise nur für Ihren Benutzerbereich.Öffnen Sie dazu PowerShell mit Administratorrechten (suchen Sie nach PowerShell, klicken Sie mit der rechten Maustaste darauf und wählen Sie dann „ Als Administrator ausführen “) und geben Sie folgenden Befehl ein:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
Dies ermöglicht das Ausführen von signierten oder lokal erstellten Skripten. Auf manchen Rechnern werden Sie gefragt, ob Sie die Richtlinie wirklich ändern möchten – bestätigen Sie dies einfach mit „Ja“.Stammen Ihre Skripte aus dem Internet oder von nicht vertrauenswürdigen Quellen, müssen Sie die Einstellung ändern Unrestricted. Verwenden Sie dazu folgenden Befehl:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
Hier ist Vorsicht geboten – Windows macht es einem natürlich unnötig schwer. Beachten Sie: Diese Einstellung Unrestrictederlaubt die Ausführung aller Skripte, was ein Sicherheitsrisiko darstellen kann, wenn Sie nicht vorsichtig sind.
Methode 1: Verwendung des Aufgabenplaners
Dies ist die einfachste Methode für die meisten, insbesondere wenn Sie einfach nur klicken und sich dann nicht mehr darum kümmern möchten. Es ist intuitiv per Mausklick bedienbar, Skripte sind nicht erforderlich.Öffnen Sie „Ausführen“ und Win + Rgeben Sie dann taskschd.msc ein. Das ist Ihr Zugang zur Aufgabenplanung. Klicken Sie anschließend mit der rechten Maustaste auf „Aufgabenplanungsbibliothek“ und wählen Sie „Einfache Aufgabe erstellen“ oder „Aufgabe erstellen“, um weitere Optionen anzuzeigen.
- Benennen Sie Ihre Aufgabe und geben Sie ihr eine kurze Beschreibung (z. B.„PowerShell-Skript automatisch ausführen“).Legen Sie auf der Registerkarte „ Allgemein“ fest, ob die Aufgabe unabhängig vom Anmeldestatus ausgeführt werden soll. Gegebenenfalls müssen Sie „Mit höchsten Berechtigungen ausführen“ auswählen, wenn Ihr Skript Administratorrechte benötigt (was üblicherweise der Fall ist).
- Legen Sie den Auslöser fest – wann soll die Aktion ausgeführt werden? Täglich, beim Systemstart, bei der Anmeldung – ganz wie es Ihnen passt. Klicken Sie auf „Neu“, wählen Sie Ihren Zeitplan und klicken Sie auf „OK“.
- Gehen Sie als Nächstes auf den Tab „Aktionen“, klicken Sie auf „Neu“ und wählen Sie dann „Programm starten“. Geben Sie im Feld „Programm/Skript“ den Pfad ein
powershellund fügen Sie unter „Argumente hinzufügen“ den entsprechenden Eintrag hinzu-File "full\path\to\your\script.ps1". Beispiel:-File "D:\Scripts\backup.ps1". Stellen Sie sicher, dass Pfad und Dateiname korrekt sind, da das Programm sonst nicht ausgeführt werden kann. - Passen Sie bei Bedarf weitere Einstellungen wie Bedingungen oder sonstige Parameter an und klicken Sie dann auf OK. Fertig.
Das ist im Prinzip alles – diese Konfiguration führt Ihr Skript in festgelegten Abständen oder bei bestimmten Auslösern aus. Dank dieser Einrichtung entfällt das manuelle Ausführen, Sie müssen nichts mehr vergessen – alles wird automatisiert.
Methode 2: Direkte Automatisierung über PowerShell
Wenn Sie gerne Skripte schreiben und alles direkt in PowerShell erledigen möchten, ist diese Methode genau das Richtige für Sie. Sie ist etwas aufwendiger, aber flexibler und wiederholbarer. Zuerst müssen Sie ein Triggerobjekt erstellen:
$Trigger = New-ScheduledTaskTrigger -Once -At 4am
Dadurch wird die Aufgabe so eingestellt, dass sie einmalig um 4 Uhr morgens ausgeführt wird.Ändern Sie dies -Oncefür andere Auslöser. Zum Beispiel eine tägliche Ausführung alle 3 Tage:-Daily-AtStartup
$Trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 3 -At 9am
Als Nächstes definieren Sie die Aktion – was ausgeführt wird, wenn der Auslöser aktiviert wird. Hier New-ScheduledTaskActionkommt Folgendes ins Spiel:
$Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-File `"`"
Vergessen Sie nicht, ` zu ersetzen
$User = "YourDomain\YourUser"
Registrieren Sie die Aufgabe abschließend bei Register-ScheduledTask. Ein Beispiel:
Register-ScheduledTask -TaskName "My PowerShell Auto" -Trigger $Trigger -User $User -Action $Action
So können Sie alles direkt in PowerShell automatisieren, was besonders praktisch ist, wenn Sie viele Anpassungen vornehmen oder Setup-Skripte automatisieren. Ein kleiner Hinweis: Für einige dieser Befehle benötigen Sie möglicherweise Administratorrechte, insbesondere wenn Sie Aufgaben erstellen, die mit erhöhten Berechtigungen ausgeführt werden.
Bei einer Konfiguration schlug das Ganze beim ersten Mal fehl – vermutlich aufgrund von Sicherheits- oder Berechtigungsproblemen. Nach einem Neustart oder dem Ausführen von PowerShell als Administrator funktionierte es einwandfrei. Manchmal muss man etwas mit Benutzerberechtigungen oder Richtlinien experimentieren, bis alles reibungslos funktioniert.
Damit ist es ganz einfach, Ihre PowerShell-Skripte zeitgesteuert auszuführen – ob täglich, beim Systemstart oder bei der Anmeldung – ohne zusätzliche Klicks. Ein wenig Vorarbeit, und dann läuft alles wie am Schnürchen.