- Mit Powershell Sie können periodische, bedingte und ereignisbasierte Aufgaben automatisieren in Windows.
- Es gibt klassische (GUI, Schtasks) und moderne (Cmdlets und geplante Jobs) Methoden zum Konfigurieren von Aufgaben.
- Um Fehler und Abstürze zu vermeiden, ist es wichtig, beim Ausführen von Skripten die richtigen Parameter zu verwenden.

Die Kontrolle über Zeitpunkt und Häufigkeit der Skriptausführung ist eine enorme Stärke in Windows und PowerShell. Die Automatisierung von Routineaufgaben oder kritischen Vorgängen spart nicht nur Zeit, sondern reduziert auch Fehler und setzt Ressourcen für wichtigere Aufgaben frei. Ob Systemadministrator, Entwickler oder einfach nur neugierig – die Beherrschung der Aufgabenplanung in PowerShell ist eine Ihrer größten Kompetenzen.
In diesem Artikel tauchen wir tief in alle Möglichkeiten ein, die Ausführung von Skripten und Befehlen mit PowerShell zu planen . Wir behandeln alles von der klassischen Verwendung der Windows-Aufgabenplanung bis hin zum modernen Ansatz mit spezifischen Cmdlets, inklusive Tipps , Empfehlungen und Details, die den entscheidenden Unterschied zwischen Erfolg und Chaos bei Ihrer Automatisierung ausmachen können.
Warum Aufgaben mit PowerShell automatisieren und planen?
Die Lebensdauer Ihrer Skripte sollte nicht davon abhängen, ob Sie sich jederzeit am Computer befinden. Die Automatisierung wiederkehrender oder bedarfsgesteuerter Aufgaben beseitigt Monotonie, verringert das Risiko von Fehlern und gewährleistet den reibungslosen Ablauf kritischer Prozesse.
Der häufigste Grund für die Planung von Aufgaben besteht darin, Wartungs-, Sicherungs-, Überwachungs- oder Berichtsskripts zu bestimmten Zeiten auszuführen: regelmäßig, als Reaktion auf Ereignisse oder unter bestimmten Bedingungen.
Windows bietet mehrere Tools und Methoden für diese Art der Automatisierung. Der Taskplaner ist zwar ein Veteran, aber PowerShell hat ihn mit modernen Cmdlets neu erfunden, mit denen Sie Aufgaben über die Konsole oder über Skripts erstellen, verwalten und steuern können.
Grundlegendes zum Windows Taskplaner und PowerShell
Der Windows-Aufgabenplaner ist seit Jahrzehnten das Standardwerkzeug zur Automatisierung der Ausführung von Programmen, Befehlen und Skripten. Bei PowerShell-Skripten treten jedoch häufig Zweifel, Ausführungsfehler oder unerwartetes Verhalten auf, wenn die Optionen nicht korrekt konfiguriert sind.
Hier bietet Ihnen PowerShell zwei Wege :
- Verwenden Sie den Taskplaner über die grafische Oberfläche, fügen Sie PowerShell als Programm hinzu und Skript als Argument.
- Verwenden Sie PowerShell-Cmdlets, um geplante Aufgaben über die Befehlszeile oder Skripts zu erstellen und zu verwalten. Dies ist leistungsstärker, flexibler und wiederholbarer.
Wichtiger Hinweis: PowerShell 3.0 und höher enthalten das Modul PSScheduledJob , das eine Reihe von Cmdlets für die Arbeit mit geplanten Aufgaben hinzufügt. Damit können Sie Aufgaben erstellen, die regelmäßig im Hintergrund ausgeführt werden und ihre Ausführungsergebnisse automatisch speichern.
Wie funktioniert die Aufgabenplanung mit PowerShell?
Der grundlegende Ablauf zum Programmieren eines Skripts in PowerShell ist wie folgt:
- Speichern Sie das Skript, das Sie automatisieren möchten, an einem Speicherort, auf den der Benutzer, der es ausführen wird, zugreifen kann.
- Definieren Sie den Auslöser oder die Häufigkeit: täglich, wöchentlich, ereignisbasiert oder auf Anfrage.
- Konfigurieren Sie die auszuführende Aktion: Führen Sie PowerShell normalerweise mit Ihrem Skript als Argument aus.
- Registrieren Sie die geplante Aufgabe, damit Windows sie automatisch ausführt.
Die Details machen jedoch den entscheidenden Unterschied. Es reicht nicht aus, einfach den Skriptpfad im Scheduler anzugeben und zu erwarten, dass es funktioniert. Es gibt wichtige Optionen wie Berechtigungen, Argumente, Ausführungsrichtlinien und erweiterte Privilegien, die Sie gründlich verstehen sollten – sowohl hinsichtlich ihrer Vorteile als auch im Hinblick darauf, wie Sie häufige Fehler vermeiden.
Methoden zum Planen von Aufgaben mit PowerShell
Es gibt mehrere Möglichkeiten, Aufgaben in PowerShell zu automatisieren. Die gängigsten sind:
- Manuelle Erstellung über die Taskplaner-GUI
- Befehle verwenden schtasks.exe von der Konsole
- Mithilfe nativer PowerShell-Cmdlets wie Neue geplante Aufgabe, Register-ScheduledTask oder das Modul PSScheduledJob
Manuelle Erstellung mit dem Taskplaner (GUI)
Die traditionelle Methode besteht aus:
- Öffnen Systemsteuerung > Verwaltung > Aufgabenplanung.
- Wählen Sie die Option Aufgabe erstellen anstelle von „Einfache Aufgabe erstellen“, um alle erweiterten Optionen zu haben.
- Tab Allgemein, vergeben Sie einen Namen und wählen Sie Wird ausgeführt, unabhängig davon, ob der Benutzer angemeldet ist oder nicht y Mit höchsten Berechtigungen ausführen wenn Ihr Skript es benötigt.
- Tab Löst aus, legen Sie die Häufigkeit fest: täglich, wöchentlich, beim Anmelden, beim Systemstart usw.
- En Acciones, wählen Sie „Programm starten“. Hier ist der Kern: in Programm oder Skript du musst schreiben powershell.exe und in Argumente hinzufügen, der Parameter, der Ihr Skript ausführt.
Richtige Konfiguration der PowerShell-Skriptausführung
Hier tritt üblicherweise das erste Problem auf. Es genügt nicht, einfach den Pfad zur .ps1-Datei anzugeben , als wäre es eine .bat-Datei, da PowerShell explizite Anweisungen benötigt, was zu tun ist.
Die zuverlässigste Methode, um sicherzustellen, dass Ihr .ps1-Skript wie gewünscht ausgeführt wird, besteht darin, im Feld „Argumente hinzufügen“ die folgenden Argumente anzugeben:
-NoProfile -NonInteractive -ExecutionPolicy Bypass -Command "& 'ruta-completa-al-script.ps1'"
Warum diese Parameter?
- -KeinProfil: Vermeidet das Laden des Benutzerprofils, macht es vorhersehbarer und vermeidet mögliche Abstürze.
- -Nicht interaktiv: stellt sicher, dass das Skript nicht versucht, Dialoge anzuzeigen, die ein Eingreifen erfordern.
- -ExecutionPolicy Bypass: Umgehen Sie Ausführungsbeschränkungen (solange Sie sicher sind, dass das Skript sicher ist).
- -Befehl: führt den Befehlsblock aus und der & dient als Aufrufoperator in PowerShell.
Hinweis: Dem Skriptaufruf muss ein & vorangestellt und er muss in einfache Anführungszeichen innerhalb der globalen doppelten Anführungszeichen eingeschlossen werden.
Praktisches Beispiel einer geplanten Aufgabe in PowerShell
Angenommen, Sie haben das Skript C:\Data\MonitorDiscosServidor.ps1 und möchten, dass es wöchentlich montags um 15:45 Uhr ausgeführt wird.
- Programm oder Skript:
powershell.exe - Argumente hinzufügen:
-NoProfile -NonInteractive -ExecutionPolicy Bypass -Command "& 'C:\Data\MonitorDiscosServidor.ps1'"
Dadurch wird sichergestellt, dass PowerShell Ihre Datei ohne Störungen startet und die Aufgabe nicht mitten in der Ausführung hängen lässt – ein sehr häufiger Fehler, wenn diese Parameter weggelassen werden.
Erweiterte Automatisierung mit PowerShell-Cmdlets
Seit PowerShell 3.0 stehen ein Modul und eine Reihe spezifischer Cmdlets zur Verfügung, mit denen sich geplante Aufgaben deutlich flexibler erstellen, verwalten und abfragen lassen – auch aus Skripten heraus. Dies ist besonders nützlich für komplexe Automatisierungen, die Replikation von Aufgaben auf verschiedenen Servern, das Speichern von Konfigurationen als Code oder die Generierung von Batch-Aufgaben.
Beteiligte Haupt-Cmdlets:
- Neue geplante Aufgabenaktion: Definiert, was ausgeführt wird (z. B. powershell.exe und das Skript).
- Neuer geplanter Task-Trigger: Erstellt den Auslöser (täglich, wöchentlich, beim Start usw.).
- Register-ScheduledTask: Registriert die Aufgabe im System.
- Get-ScheduledTask: : Vorhandene Aufgaben abfragen.
Einfaches einzeiliges Beispiel:
Register-ScheduledTask -Action (New-ScheduledTaskAction -Execute 'notepad.exe') -Trigger (New-ScheduledTaskTrigger -Daily -At 16:25pm) -TaskName 'Update'
Dieser Befehl erstellt eine Aufgabe, die Notepad täglich um 16:25 Uhr öffnet. Sie müssen lediglich notepad.exe durch „PowerShell.exe“ ersetzen und die korrekten Argumente hinzufügen.
Erstellen geplanter Jobs in PowerShell
Ein weiteres interessantes Feature sind geplante Jobs , die als Hybrid zwischen Scheduler-Aufgaben und PowerShell-Hintergrundjobs fungieren.
Der große Vorteil besteht darin, dass Sie mit PowerShell definieren, abfragen und steuern können, wann, wie und was ausgeführt wird , einschließlich der Protokollierung von Ergebnissen und der erweiterten Administration.
Beispiel: Erstellen Sie einen täglich um 3:00 Uhr geplanten Job, der ausgeführt wird Get-Process auch wenn das System im Akkubetrieb läuft:
$trigger = New-JobTrigger -Daily -At 3AM
$options = New-ScheduledJobOption -StartIfOnBattery
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} -Trigger $trigger -ScheduledJobOption $options
Überprüfen Sie vorhandene geplante Jobs:
Get-ScheduledJob
Zeigen Sie Auslöser für einen bestimmten Job an:
Get-JobTrigger -Name ProcessJob
Sammeln Sie die Ergebnisse der letzten Jobausführung:
Receive-Job -Id 51
Und wenn Sie den geplanten Job und seine gespeicherten Ergebnisse löschen möchten:
Unregister-ScheduledJob ProcessJob
Dies ermöglicht eine zentralisierte und erweiterte Verwaltung, ideal für Geschäfts- oder Laborszenarien, in denen Sie Ausführungs- und Ergebnisaufzeichnungen verwalten möchten.
Planen Sie Aufgaben für bestimmte Ereignisse in Windows
Der Aufgabenplaner dient nicht nur der zeitbasierten Planung. Sie können auch PowerShell-Skripte als Reaktion auf Systemereignisse ausführen (z. B. bei einem Authentifizierungsfehler oder einem anderen Ereignis im Ereignisprotokoll).
Die Einrichtung ist einfach:
- Suchen Sie in der Ereignisanzeige das Ereignis, das als Auslöser dienen soll.
- Wählen Sie die Option „Aufgabe an dieses Ereignis anhängen“ oder ähnliches.
- Folgen Sie dem Assistenten und geben Sie an, wie die Aktion ausgeführt werden soll. powershell.exe und in Argumenten, -Datei „vollständiger Pfad des Skripts.ps1“.
- Denken Sie daran, die Einstellungen so zu ändern, dass die Aufgabe mit den erforderlichen Berechtigungen ausgeführt wird und unabhängig davon, ob der Benutzer angemeldet ist oder nicht.
Diese Art der Automatisierung eignet sich perfekt für proaktive Warnmeldungen – zum Beispiel für ein PowerShell-Skript, das eine E-Mail versendet, sobald es ein Sicherheitsmuster in den Protokollen erkennt.
Vollständiges Beispiel: Erstellen, Registrieren und Überprüfen einer Aufgabe in PowerShell
Nachfolgend finden Sie ein vollständiges Szenario zum Erstellen und Überprüfen einer geplanten Aufgabe:
- Bereiten Sie das Skript vor: Speichern Sie Ihre PowerShell in C:\scripts\MonitorLog.ps1Beispielsweise ein Skript, das Änderungen an einem Protokoll überwacht.
- Konfigurieren Sie die Ausführungsrichtlinie (nur beim ersten Mal):
Set ExecutionPolicy RemoteSigned
- Erstellen Sie die Aufgabe mit Cmdlets:
$action = New-ScheduledTaskAction -Execute 'PowerShell.exe' -Argument '-NoProfile -NonInteractive -ExecutionPolicy Bypass -Command "& ''C:\scripts\MonitorLog.ps1''"' $trigger = New-ScheduledTaskTrigger -Weekly -WeeksInterval 1 -DaysOfWeek Montag -Um 2:40 Register-ScheduledTask -TaskName 'MonitorLog' -Trigger $trigger -User 'Administrator' -Action $accion -RunLevel Highest –Force
- Überprüfen Sie, ob die Aufgabe korrekt angezeigt wird:
Get-ScheduledTask -TaskName 'MonitorLog'
- Überprüfen Sie die Ergebnisse nach der Ausführung: Überprüfen Sie die Programmierprotokolle oder verwenden Sie Get-ScheduledJob Wenn Sie geplante Jobs verwendet haben, um Ausführung und Ergebnisse zu überprüfen.
Automatisierung mit PowerShell und Cloud-Plattformen
Sie können Aufgaben nicht nur lokal in Windows planen, sondern mit PowerShell und seiner Integration in Plattformen wie Microsoft 365 , Azure und Dynamics auch umfangreiche Automatisierungen in der Cloud erstellen . Vertiefen Sie Ihr Wissen über die Aufgabenplanung mit PowerShell in unserer Ressource „ Microsoft Flow für die Automatisierung nutzen “.
Einige nützliche Cmdlets sind:
- Get-AdminPowerAppEnvironment: zum Auflisten von Umgebungen und Arbeiten mit Power Apps.
- Azure-Cmdlets: um regelmäßig Skripte für Cloud-Ressourcen zu starten.
- Lizenzautomatisierung und Benutzerverwaltung in Microsoft 365.
Leidenschaftlicher Autor über die Welt der Bytes und der Technologie im Allgemeinen. Ich liebe es, mein Wissen durch Schreiben zu teilen, und genau das werde ich in diesem Blog tun und Ihnen die interessantesten Dinge über Gadgets, Software, Hardware, technologische Trends und mehr zeigen. Mein Ziel ist es, Ihnen dabei zu helfen, sich auf einfache und unterhaltsame Weise in der digitalen Welt zurechtzufinden.