- 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.

Steuerung die zeit und die Ausführungshäufigkeit Ihrer Skripte ist eine Superkraft bei der Arbeit mit Windows und PowerShell. Durch die Automatisierung von Routineaufgaben oder kritischen Aufgaben sparen Sie nicht nur Zeit, sondern können auch Fehler reduzieren und Ressourcen freisetzen, damit Sie sich auf wichtigere Aufgaben konzentrieren können. Egal, ob Sie Systemadministrator, Entwickler oder einfach nur neugierig sind, die Beherrschung der Programmierung von Aufgaben in PowerShell wird einer Ihrer größten Vorteile sein.
In diesem Artikel tauchen wir kopfüber in die Entdeckung aller Möglichkeiten ein, die Ausführung von Skripten planen und Befehle mit PowerShellWir werden von der klassischen Verwendung des Windows Taskplaners bis zum modernen Ansatz mit spezifischen Cmdlets gehen und dabei Folgendes abdecken: Tricks, Empfehlungen und Details, die den Unterschied zwischen Erfolg und Chaos bei Ihrer Automatisierung ausmachen können.
Warum Aufgaben mit PowerShell automatisieren und planen?
Die Lebensdauer von Skripten sollte nicht davon abhängen, dass Sie genau zum richtigen Zeitpunkt an der Tastatur sitzen. Durch die Automatisierung wiederkehrender oder bedarfsgesteuerter Aufgaben wird Monotonie vermieden, die Möglichkeit von Versehen verringert und sichergestellt, dass kritische Vorgänge in jedem Fall ausgeführt werden.
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 Taskplaner ist seit Jahrzehnten das bevorzugte Tool zur Automatisierung der Ausführung von Programmen, Befehlen und Skripten. Bei PowerShell-Skripten ist dies jedoch nicht der Fall. Zweifel, Fehler bei der Ausführung oder unerwartetes Verhalten treten immer dann auf, wenn die Optionen nicht richtig konfiguriert sind..
Dies ist wo PowerShell bietet Ihnen 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.
Ein wichtiger Hinweis: Seit PowerShell 3.0 ist das Modul enthalten PSScheduledJob Dadurch werden eine Reihe von Cmdlets für die Arbeit mit geplanten Aufgaben hinzugefügt. So können Sie Aufgaben erstellen, die regelmäßig im Hintergrund ausgeführt werden und die 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.
Jetzt kommt es auf die Details an. Es reicht nicht, einfach den Skriptpfad in den Programmierer einzugeben und zu erwarten, dass es funktioniert. Es gibt wichtige Optionen wie Berechtigungen, Argumente, Ausführungsrichtlinien oder erweiterte Berechtigungen, die man gut verstehen sollte, sowie Informationen zu den Vorteilen und zur Vermeidung häufiger Fehler..
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 kommt es meist zum ersten Bruch. Es reicht nicht aus, den Pfad der .ps1-Datei anzugeben als wäre es eine .bat-Datei, da PowerShell explizit mitgeteilt werden muss, 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 Aufruf des Skripts muss vorangestellt werden & und in einfache Anführungszeichen innerhalb der globalen doppelten Anführungszeichen eingeschlossen.
Praktisches Beispiel einer geplanten Aufgabe in PowerShell
Angenommen, Sie haben das Skript C:\Data\DiskMonitorServer.ps1 und Sie 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 verfügen wir über ein Modul und eine Reihe spezifischer Cmdlets, um geplante Aufgaben viel flexibler und über Skripte zu erstellen, zu verwalten und abzufragen. Dies ist besonders nützlich, wenn Sie komplexe Automatisierungen implementieren, Aufgaben zwischen Servern replizieren, Konfigurationen als Code speichern oder Batch-Aufgaben generieren möchten.
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 jeden Tag um 16:25 Uhr öffnet. Ersetzen Sie einfach notepad.exe durch „PowerShell.exe“ und fügen Sie die richtigen Argumente hinzu.
Erstellen geplanter Jobs in PowerShell
Ein weiteres interessantes Merkmal ist die Geplante Jobs, die als Hybrid zwischen Scheduler-Aufgaben und PowerShell-Hintergrundjobs fungieren.
Der große Vorteil ist, dass Sie Definieren, abfragen und steuern Sie von PowerShell aus, wann, wie und was ausgeführt wird, einschließlich Ergebniserfassung und erweiterter Verwaltung.
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 Taskplaner ist nicht nur für die zeitbasierte Planung nützlich. Sie können PowerShell-Skripts auch als Reaktion auf Systemereignisse starten. (zum Beispiel wenn ein Authentifizierungsfehler oder ein anderes Ereignis im Ereignisprotokoll auftritt).
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 eine PowerShell, die eine E-Mail sendet, sobald sie ein Sicherheitsmuster im Protokolle.
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 mit Plattformen wie Microsoft 365, Azure oder Dynamics, Sie haben die Möglichkeit, umfangreiche Automatisierungen in der Cloud zu erstellenSie können Ihr Wissen zum Planen von Aufgaben in PowerShell mit unserer speziellen Ressource erweitern. So nutzen Sie Microsoft Flow zur Automatisierung.
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.