Magic Quadrant™ für Privileged Access Management 2025: Netwrix zum vierten Jahr in Folge anerkannt. Laden Sie den Bericht herunter.

Plattform
Ressourcen­zentrumBlog
Wie man ein PowerShell-Skript über den Aufgabenplaner ausführt

Wie man ein PowerShell-Skript über den Aufgabenplaner ausführt

Sep 16, 2024

Der Windows Task Scheduler ermöglicht es Administratoren, PowerShell-Skripte automatisch nach einem festgelegten Zeitplan oder in Reaktion auf Systemereignisse auszuführen. Dies verbessert die Konsistenz, spart Zeit und reduziert menschliche Fehler bei Aufgaben wie Backups, Updates, Überwachung und Bereinigungen. Skripte können über die GUI oder PowerShell-Cmdlets (Register-ScheduledTask, New-ScheduledTaskTrigger, etc.) geplant werden. Zu den bewährten Methoden gehören die Verwendung von Konten mit minimalen Rechten, Protokollierung und Fehlerbehandlung, das Signieren von Skripten und regelmäßige Überprüfungen, um Missbrauch zu verhindern.

Einführung

Der Windows Task Scheduler ermöglicht es Benutzern, Aufgaben zu planen, die zu einem bestimmten Datum und einer bestimmten Uhrzeit, nach einem definierten Zeitplan oder bei Auslösung durch bestimmte Ereignisse ausgeführt werden. Dieses integrierte Tool der Windows-Betriebssysteme hilft dabei, die Effizienz zu steigern und die zuverlässige Ausführung von wiederkehrenden Aufgaben zu gewährleisten. In diesem Blog zeigen wir Ihnen, wie Sie ein PowerShell-Skript vom Task Scheduler ausführen und wie Sie geplante Aufgaben mit PowerShell erstellen.


Einrichten von PowerShell-Skripten für die Automatisierung

Verständnis des Task-Schedulers

Die Taskplanungsbibliothek ist eine Sammlung aller definierten Aufgaben, die in Ordner organisiert sind. Für jede Aufgabe bietet die GUI folgende Registerkarten:

  • Allgemein — Der Name und die Beschreibung der Aufgaben, das Konto, unter dem sie ausgeführt werden sollen, und andere Sicherheitsoptionen.
  • Auslöser — Die Bedingungen, die eine Aufgabe starten, können zeitbasiert (z.B. täglich, wöchentlich), ereignisbasiert (z.B. beim Systemstart oder Benutzeranmeldung) oder benutzerdefiniert sein
  • Aktionen — Die Operationen, die ausgeführt werden, wenn eine Aufgabe ausgelöst wird, wie zum Beispiel das Starten eines Programms.
  • Bedingungen — Kriterien, die die Ausführung einer Aufgabe basierend auf dem Zustand des Computers steuern, wie zum Beispiel nur dann ausführen, wenn der Computer für einen bestimmten Zeitraum untätig ist
  • Einstellungen — Zusätzliche Konfigurationen, die bestimmen, wie und wann eine Aufgabe ausgeführt wird, wie das Neustarten einer Aufgabe, wenn sie fehlschlägt, oder das Beenden, wenn sie länger als erwartet läuft
  • Geschichte — Eine Historie der Aufgabenausführungen, einschließlich Startzeiten, Endzeiten und aller aufgetretenen Fehler oder Warnungen
Image

Vorteile der Verwendung von Task Scheduler zur Automatisierung von PowerShell-Skripten

Die Automatisierung von PowerShell-Skripten über den PowerShell Task Scheduler bietet viele Vorteile, einschließlich der folgenden:

  • Zeitersparnis — Wenn Sie PowerShell-Skripte vom Task Scheduler ausführen, können Sie eine erhebliche Menge an Zeit sparen, die sonst für die manuelle Ausführung aufgewendet werden würde. Dies ist besonders vorteilhaft für Skripte, die außerhalb der Geschäftszeiten ausgeführt werden müssen.
  • Konsistenz — Automatisierung verringert das Risiko menschlicher Fehler. Ein geplantes PowerShell-Skript wird jedes Mal genau die gleichen Operationen in der gleichen Reihenfolge ausführen.
  • Zuverlässigkeit — Mit dem Task Scheduler können Sie sicherstellen, dass kritische Wartungsaufgaben wie Backup- und Bereinigungsroutinen regelmäßig ausgeführt werden. Dies erhöht die Zuverlässigkeit des Systems und verringert das Risiko von Datenverlusten oder Systemausfällen.
  • Ressourceneffizienz — Indem Sie Skripte so planen, dass sie in Zeiten geringer Systemauslastung ausgeführt werden, können Sie sicherstellen, dass intensive Aufgaben die Systemleistung während der Spitzenzeiten nicht beeinträchtigen.
  • Flexibilität — Der Task Scheduler bietet eine Vielzahl von Planungsoptionen, einschließlich der Möglichkeit, Aufgaben beim Systemstart, bei der Anmeldung, im Leerlauf oder als Reaktion auf bestimmte Ereignisse auszuführen. Diese Kontrollebene ermöglicht es Ihnen, die Skriptausführung an Ihre spezifischen Anforderungen anzupassen.
  • Fehlerbehandlung — Sie können geplante Aufgaben so konfigurieren, dass sie bei einem Skriptfehler einen erneuten Versuch unternehmen, E-Mails nach Abschluss oder Fehlschlag der Aufgabe senden und Ereignisprotokolle schreiben. Dies ermöglicht eine zeitnahe Fehlerbehebung und hält Sie über den Zustand automatisierter Prozesse auf dem Laufenden.
  • Sicherheit — Mit dem Aufgabenplaner können PowerShell-Skripte unter bestimmten Benutzerkonten ausgeführt werden, einschließlich solcher mit erhöhten Privilegien, ohne dass der Benutzer angemeldet sein muss. Dies stellt sicher, dass sensible Aufgaben sicher ausgeführt werden und ermöglicht die Automatisierung von Skripten, die höhere Privilegien erfordern. Da Angreifer jedoch geplante und ausgelöste Aufgaben für bösartige Zwecke ausnutzen können, sollten Sie ein Überwachungs- oder Tracking-System verwenden, um Aufgaben auf potenziellen Missbrauch zu überwachen. Netwrix Access Analyzer ist ein gutes Beispiel für ein Tool, das bösartige Aktivitäten abschwächen kann.
  • Integration und Erweiterbarkeit — Das Planen von PowerShell-Skripten ermöglicht komplexe Automatisierungsszenarien, die auf Systemereignisse reagieren, mehrere Aufgaben orchestrieren und mehr.
  • Verwaltung komplexer Arbeitsabläufe — Der Task Scheduler kann komplexe Arbeitsabläufe verwalten, wie das Verketten von Aufgaben oder die Verwendung bedingter Logik basierend auf dem Erfolg oder Misserfolg einer vorherigen Aufgabe. Dies ist unschätzbar wertvoll für Szenarien, in denen mehrere, voneinander abhängige Aufgaben sorgfältig koordiniert werden müssen.
  • Benutzerfreundlichkeit — Trotz seiner leistungsstarken Funktionen verfügt der Task Scheduler über eine intuitive grafische Benutzeroberfläche, die das Einrichten und Verwalten von automatisierten Aufgaben vereinfacht. Für fortgeschrittene Benutzer kann der Task Scheduler auch mit Kommandozeilen-Tools oder PowerShell-Cmdlets konfiguriert und verwaltet werden.

Schritte zum Erstellen eines Zeitplans für ein PowerShell-Skript

Bevor Sie ein PowerShell-Skript mit dem Task Scheduler planen, stellen Sie sicher, dass das Skript mit der Endung .ps1 gespeichert ist und dass es getestet wurde, um seine einwandfreie Funktion zu gewährleisten.

Gehen Sie dann folgendermaßen vor:

  • Aufgabenplanung öffnen: Drücken Sie Win + R, geben Sie taskschd.msc in das Ausführen-Dialogfeld ein und drücken Sie Enter.
Image
  • Im Bereich „Actions“ rechts klicken Sie auf „Create Task“.
  • Auf dem General-Tab folgendes tun:
  • Geben Sie einen Namen und eine Beschreibung für Ihre Aufgabe ein.
  • Konfigurieren Sie die entsprechenden Sicherheitsoptionen. Zum Beispiel stellt die Auswahl von Run whether user is logged on or not sicher, dass die Aufgabe auch dann ausgeführt wird, wenn Sie nicht angemeldet sind. Wenn das Skript administrative Rechte erfordert, aktivieren Sie Run with highest privileges.

Klicken Sie auf OK um Ihre Änderungen zu speichern.

Image
  • Gehen Sie zum Tab „Triggers“ und klicken Sie auf „New“. Wählen Sie im Bereich „New Trigger“ folgendes aus:
  • Wann die Aufgabe beginnen soll
  • Die Häufigkeit, mit der es ausgeführt werden soll, wie einmal, täglich oder wöchentlich
  • Alle zusätzlichen Optionen, die Sie benötigen, wie das Anhalten der Aufgabe, wenn sie länger als die von Ihnen angegebene Zeit läuft

Klicken Sie auf OK um Ihre Änderungen zu speichern.

Image
  • Gehen Sie zum Tab „Actions“. Klicken Sie auf „New“, um eine neue Aktion einzurichten, die Ihr PowerShell-Skript ausführt:
  • Aus dem Action-Dropdown-Menü wählen Sie Start a program.
  • In the Program/script field, enter powershell.exe.
  • Im Feld Add arguments geben Sie Folgendes ein und achten Sie darauf, den vollständigen Pfad zu Ihrem Skript anzugeben: -File C:\Scripts\scriptname.ps1
  • Im Feld „Start in“ geben Sie das Verzeichnis an, in dem das Skript ausgeführt werden soll, falls nötig. Dies ist normalerweise nicht erforderlich, es sei denn, Ihr Skript basiert auf relativen Pfaden.

Klicken Sie auf OK um Ihre Änderungen zu speichern

Image
  • Klicken Sie auf OK und wechseln Sie zum Tab Bedingungen. Legen Sie alle Bedingungen fest, unter denen die Aufgabe ausgeführt werden soll. Zum Beispiel können Sie festlegen, dass die Aufgabe nur ausgeführt werden soll, wenn der Computer am Netzstrom angeschlossen ist oder nur, wenn er mit einem bestimmten Netzwerk verbunden ist. Klicken Sie auf OK um Ihre Auswahl zu speichern.
Image
  • Als Nächstes gehen Sie zum Tab „Settings“ und konfigurieren Sie Folgendes:
  • Erlauben Sie die Ausführung der Aufgabe auf Anforderung — Aktivieren Sie dies, wenn Sie die Aufgabe manuell ausführen möchten.
  • Wenn die Aufgabe fehlschlägt — Geben Sie an, was passieren soll, wenn die Aufgabe fehlschlägt, wie zum Beispiel das Neustarten der Aufgabe.
  • Stoppen Sie die Aufgabe, wenn sie länger dauert als — Setzen Sie ein Zeitlimit, falls zutreffend.
  • Wenn die Aufgabe bereits läuft — Wählen Sie, was passieren soll, wenn die Aufgabe ausgelöst wird, aber bereits läuft.
Image
  • Klicken Sie auf OK um Ihre Aufgabe abzuschließen. Sie werden aufgefordert, die Anmeldeinformationen für das Benutzerkonto einzugeben, unter dem die Aufgabe ausgeführt wird.

Erweiterte Konfiguration und bewährte Methoden

Steuerung der Skriptausführung und Sichtbarkeit

Um die Ausführung und Sichtbarkeit von Skripten bei der Verwendung des Task Scheduler zu steuern, können Sie die folgenden Parameter im Feld Add arguments der Registerkarte Action verwenden:

  • NoExit — Fügen Sie diesen Parameter hinzu, um zu verhindern, dass sich das PowerShell- oder Eingabeaufforderungsfenster automatisch schließt, nachdem das Skript ausgeführt wurde. Diese Option ist nützlich für das Debugging oder wenn Sie möchten, dass das Konsolenfenster geöffnet bleibt, um die Ausgabe direkt zu überprüfen.
  • Befehl — Verwenden Sie diesen Parameter, um den vollständigen Pfad eines auszuführenden Skripts und alle notwendigen Argumente anzugeben.

Zum Beispiel könnten Sie folgendes im Feld „Add arguments“ angeben:

      -NoExit -Command -File C:\Scripts\InstallOfSoftware.ps1
      

Umleiten der Ausgabe in eine Textdatei oder andere Ziele, um Skriptaktivitäten zu protokollieren

Fehlerbehebung bei häufigen Problemen mit dem Windows Taskplaner

Hier sind einige häufige Probleme, die verhindern können, dass Ihre geplanten Aufgaben wie erwartet ausgeführt werden, und wie Sie sie lösen können.

Die Aufgabe wird nicht starten oder ausgeführt.

  • Stellen Sie sicher, dass das Benutzerkonto, das die Aufgabe ausführt, die erforderlichen Berechtigungen hat, um die Aufgabe auszuführen und auf alle Dateien oder Verzeichnisse zuzugreifen, die von der Aufgabe referenziert werden.
  • Überprüfen Sie die Konfigurationseinstellungen der Aufgabe, wie die Auslöseeinstellungen, Aktionsparameter und Bedingungen.
  • Stellen Sie sicher, dass die Aufgabe aktiviert ist.
  • Wenn die Aufgabe ein bestimmtes Benutzerkonto zur Ausführung verwendet, überprüfen Sie, ob das Passwort geändert wurde und aktualisieren Sie es für die Aufgabe, falls nötig.

Die Aufgabe wird manuell ausgeführt, aber nicht automatisch.

  • Überprüfen Sie, ob die Trigger-Einstellungen korrekt sind; häufige Probleme sind falsche Startzeiten, fehlkonfigurierte Zeitpläne.
  • Überprüfen Sie Bedingungen, die die Ausführung der Aufgabe verhindern könnten, wie zum Beispiel, dass sie nur ausgeführt wird, wenn der Computer für eine bestimmte Zeit im Leerlauf ist. Wenn die Aufgabe so geplant ist, dass sie während der Leerlaufzeiten oder wenn der Computer nicht benutzt wird ausgeführt wird, können Energieeinstellungen wie Schlaf- oder Ruhezustand die Ausführung verhindern. Passen Sie die Energieeinstellungen an, um sicherzustellen, dass das System für die Ausführung der Aufgabe aktiv bleibt.

Die Aufgabe stoppt unerwartet oder verhält sich nicht korrekt.

  • Überprüfen Sie, ob genügend Speicher, CPU oder Festplattenplatz verfügbar ist, damit die Aufgabe reibungslos ausgeführt werden kann.
  • Wenn die Aufgabe das Ausführen eines Skripts beinhaltet, stellen Sie sicher, dass das Skript außerhalb des Task Scheduler korrekt läuft. Berücksichtigen Sie, wie Umgebungsvariablen, Pfade oder Berechtigungen in den beiden Situationen unterschiedlich sein könnten.

Der Task schlägt mit spezifischen Fehlercodes fehl.

Suchen Sie den im Verlauf oder Ereignisprotokoll der Aufgabe angegebenen Fehlercode auf, um aktuelle Informationen zum Problem und dessen Behebung zu erhalten.

Der Task wird ausgeführt, aber er bewirkt nichts.

  • Stellen Sie sicher, dass die Aktion, die für die Aufgabe festgelegt ist, z. B. das Starten eines Programms, korrekt konfiguriert ist.
  • Wenn das Skript aufgrund von Richtlinienbeschränkungen nicht ausgeführt wird, sollten Sie das Hinzufügen des Arguments -ExecutionPolicy Bypass in Betracht ziehen, um die Ausführungsrichtlinie des Systems zu überschreiben und die Ausführung des Skripts zu ermöglichen.
  • Stellen Sie sicher, dass die Pfade zu ausführbaren Dateien oder Skripten korrekt sind und alle Befehlszeilenargumente richtig angegeben werden.
  • Wenn die Aufgabe in eine Datei oder an einen anderen Zielort ausgegeben werden soll, stellen Sie sicher, dass die Pfade korrekt sind und das ausführende Konto die erforderlichen Schreibberechtigungen besitzt.

Fordern Sie eine kostenlose Testversion von Monitor and Secure Scheduled Tasks an

Praktische Beispiele für gängige Anwendungsfälle

Beispielskripte für gängige administrative Aufgaben

Im Folgenden finden Sie einige praktische Anwendungsfälle für gängige administrative Aufgaben, die Sie möglicherweise mit dem Windows Task Scheduler automatisieren möchten, zusammen mit Beispiel-Skripten.

Sichern Sie einen Ordner

Das folgende Skript kann verwendet werden, um einen Ordner auf dem C-Laufwerk in einen Ordner auf dem lokalen D-Laufwerk zu sichern:

      Copy-Item -Path "C:\Source\*" -Destination "D:\Backup" -Recurse -Force
      

Software-Updates installieren

Um Software oder Systemkomponenten automatisch zu aktualisieren, verwenden Sie dieses Skript:

      Install-WindowsUpdate -AcceptAll -AutoReboot
      

Benutzerbenachrichtigungen senden

Um Erinnerungen an bevorstehende Veranstaltungen an eine E-Mail-Verteilerliste zu senden, verwenden Sie dieses Skript:

      Send-MailMessage -To "AbbeyCrawford@milkyway.com" -From "AbbeyTucker@milkyway.com" -Subject "Daily Meeting Reminder" -Body "This is a reminder about the meeting scheduled for 10:00 AM." -SmtpServer "smtp.milkyway.com"
      

Führen Sie Sicherheitsscans durch

Um Sicherheitsscans automatisch auszuführen, um Malware oder Schwachstellen zu erkennen, verwenden Sie dieses Skript:

      Start-MpScan -ScanType QuickScan
      

Bereinigen Sie temporäre Dateien

Dieses Skript entfernt temporäre Dateien aus den angegebenen Verzeichnissen:

      Get-ChildItem -Path C:\Windows\Temp\*, $env:TEMP\* -Recurse | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
      

Einen Dienst neu starten

Um einen Dienst neu zu starten, wie zum Beispiel einen Webserver oder Microsoft SQL Server-Dienst, können Sie Befehle wie die folgenden verwenden:

      Restart-Service -Name W3SVC
      
      Restart-Service -Name MSSQLSERVER
      

Planung komplexer PowerShell-Skripte

Sie können auch komplexere PowerShell-Skripte planen. Wie in den untenstehenden Beispielen dargestellt, ist es eine bewährte Methode, Kommentare einzufügen, die den Zweck der verschiedenen Abschnitte eines Skripts beschreiben.

Bericht über die Nutzung des Festplattenspeichers

Dieses Skript bietet einen schnellen Überblick über die Festplattennutzung:

      # Script to report disk space usage

Get-PSDrive -PSProvider FileSystem |

Select-Object Name, @{Name="UsedGB";Expression={"{0:N2}" -f (($_.Used - $_.Free)/1GB)}}, @{Name="FreeGB";Expression={"{0:N2}" -f ($_.Free/1GB)}}, @{Name="TotalGB";Expression={"{0:N2}" -f ($_.Used/1GB)}} |

Format-Table -AutoSize
      

Systemgesundheit überwachen

Um die Systemleistung im Laufe der Zeit zu verfolgen, können Sie dieses PowerShell-Skript verwenden, um die CPU-Auslastung, Speichernutzung und Festplattenspeicher in einer Datei zu protokollieren:

      # Define the log file path

$logFile = "C:\SystemHealthLog.txt"

# Function to get system health metrics

function Get-SystemHealth {

    # Get CPU usage

    $cpuUsage = Get-Counter '\Processor(_Total)\% Processor Time'

    # Get memory usage

    $memoryUsage = Get-Counter '\Memory\Available MBytes'

    # Get disk space usage for C: drive

    $diskSpace = Get-PSDrive -Name C

    $usedSpace = $diskSpace.Used / 1MB

    $freeSpace = $diskSpace.Free / 1MB

    $totalSpace = $diskSpace.Used + $diskSpace.Free / 1MB

    # Format output

    $cpuUsageFormatted = "{0:N2}%" -f $cpuUsage.CounterSamples[0].CookedValue

    $memoryUsageFormatted = "{0:N2} MB" -f $memoryUsage.CounterSamples[0].CookedValue

    $diskSpaceFormatted = "Used: {0:N2} MB, Free: {1:N2} MB, Total: {2:N2} MB" -f $usedSpace, $freeSpace, $totalSpace

    # Write to log file

    $logEntry = "Date and Time: $(Get-Date) - CPU Usage: $cpuUsageFormatted, Memory Available: $memoryUsageFormatted, Disk Space: $diskSpaceFormatted"

    Add-Content -Path $logFile -Value $logEntry

}

# Run the health check

Get-SystemHealth
      

Geplante Aufgaben ändern oder löschen

Bevor Sie eine oder mehrere geplante Aufgaben ändern oder löschen, möchten Sie vielleicht alle vorhandenen Aufgaben überprüfen. Um die Liste der Aufgaben zu sehen, führen Sie einfach das Cmdlet Get-ScheduledTask aus.

Geplante Aufgabe ändern

Um eine Aufgabe zu ändern, klicken Sie mit der rechten Maustaste darauf und wählen Sie Eigenschaften, wie unten gezeigt. Bearbeiten Sie dann die erforderlichen Einstellungen und klicken Sie auf OK, um Ihre Änderungen zu speichern.

Image

Löschen einer geplanten Aufgabe

Um eine geplante Aufgabe zu löschen, klicken Sie mit der rechten Maustaste darauf, wählen Sie Löschen und bestätigen Sie die Aktion.

Image

Erstellen von geplanten Aufgaben mit PowerShell-Skripten

Einführung in die PowerShell-Planung

Um geplante Aufgaben zu erstellen, haben Sie neben dem Task Scheduler eine weitere Option: PowerShell. Das Erstellen und Verwalten von geplanten Aufgaben direkt über die PowerShell-Schnittstelle kann die Produktivität, Genauigkeit und Sitzungszuverlässigkeit erheblich steigern, insbesondere beim Verwalten von entfernten Systemen über eine CimSession.

Im Folgenden finden Sie einige der wichtigsten PowerShell-Befehle, die zum Erstellen und Verwalten von geplanten Aufgaben verwendet werden:

  • New-ScheduledTask — Erstellt ein neues geplantes Aufgabenobjekt in PowerShell
  • Register-ScheduledTask — Registriert eine neue geplante Aufgabe
  • New-ScheduledTaskAction — Definiert geplante Aufgabenaktionen
  • New-ScheduledTaskPrincipal — Speichert das Benutzerkonto, unter dem die Aufgabe ausgeführt wird
  • New-ScheduledTaskSettingsSet — Definiert die Einstellungen für geplante Aufgaben
  • New-ScheduledTaskTrigger — Definiert geplante Aufgabenauslöser

Vorteile der Verwendung von PowerShell zur Verwaltung von geplanten Aufgaben

Die Vorteile der Verwendung von PowerShell zur Ausführung geplanter Aufgaben umfassen Folgendes:

  • Benutzerfreundlichkeit — Es ist einfach, komplexe Auslöser, Bedingungen und Aktionen zu spezifizieren.
  • Flexibilität — Sie können komplexe Skripte schreiben und ausführen, die eine Vielzahl von Aufgaben bewältigen können, von einfachen Dateibereinigungen bis hin zu komplexen Systemdiagnosen und -reparaturen.
  • Zeitersparnis — Die Verwendung einer PowerShell-geplanten Aufgabe zum Ausführen eines PowerShell-Skripts eliminiert die Notwendigkeit, repetitive oder komplexe Aufgaben manuell durchzuführen.
  • Einfachere Fehlerbehebung — PowerShell-Skripte können detaillierte Informationen über Fehler protokollieren oder sogar versuchen, sie automatisch zu beheben.
  • Remote-Ausführung — Geplante Aufgaben können ausgeführt und auf mehreren Maschinen gedrosselt werden. Dies ist besonders vorteilhaft in größeren Netzwerkumgebungen.
  • Sicherheit — PowerShell umfasst viele Sicherheitsfunktionen, wie Ausführungs-policy und signierte Skripte, um sicherzustellen, dass nur autorisierte Skripte auf Ihrem System ausgeführt werden.
  • Effizienz — Die Verwendung von PowerShell zum Planen von Aufgaben verbraucht in der Regel weniger Systemressourcen als Automatisierungstools von Drittanbietern.
  • Anpassungsfähigkeit — Geplante Aufgaben in PowerShell können leicht modifiziert, repliziert oder erweitert werden, um sich an verändernde Anforderungen anzupassen.

Erstellen einer geplanten Aufgabe mit PowerShell

Ein PowerShell-Skript zum Erstellen einer geplanten Aufgabe enthält die folgenden Elemente:

  • $action — Dies gibt an, was die Aufgabe tun wird, wie das Ausführen eines PowerShell-Skripts, das Starten einer Anwendung oder das Ausführen eines Befehls:
      $action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\InstallOfSoftware.ps1"
      
  • $trigger — Dies gibt an, wann die Aufgabe ausgeführt wird, beispielsweise zu einer bestimmten Zeit, täglich oder wöchentlich, oder basierend auf Systemereignissen:
      $trigger = New-ScheduledTaskTrigger -Daily -At "10:00AM"
      
  • $principal — Dies gibt das Benutzerkonto an, unter dem die Aufgabe ausgeführt wird:

$principal = New-ScheduledTaskPrincipal -UserId “NT AUTHORITY\SYSTEM” -LogonType Password

  • $settings — Dazu gehören Optionen wie das Verhalten bei Aufgabenfehlern, Bedingungen für die Ausführung und Verhalten bei Batteriebetrieb:
      $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable
      
  • Register-ScheduledTask — Dies registriert die Aufgabe beim Aufgabenplaner:
      Register-ScheduledTask -TaskName “Installation of Software" -Action $action -Trigger $trigger -Principal $principal -Settings $settings
      

Unten können Sie die Ausführung des kompletten Skripts sehen:

Image

Sicherheitsüberlegungen und bewährte Verfahren

Sicherheitsimplikationen von geplanten Aufgaben

Wenn Sie Aufgaben planen, egal ob mit dem Task Scheduler oder PowerShell, achten Sie darauf, die folgenden Sicherheitsbedenken zu berücksichtigen:

  • Berechtigungsmanagement — Geplante Aufgaben werden mit den Berechtigungen des Kontos ausgeführt, unter dem sie geplant sind, daher können sie missbraucht werden. Dieses Risiko ist höher, wenn das Konto erweiterten Zugriff hat. Stellen Sie sicher, dass geplante Aufgaben mit Konten ausgeführt werden, die die minimal notwendigen Berechtigungen haben.
  • Skriptsicherheit — Die Skripte oder ausführbaren Dateien, die von geplanten Aufgaben aufgerufen werden, können selbst Vektoren für Sicherheitsanfälligkeiten sein. Zum Beispiel können böswillige Akteure Skripte, die in ungeschützten Verzeichnissen gespeichert sind, ersetzen oder verändern, um schädliche Befehle auszuführen.
  • Prozess-Hijacking – Wenn eine geplante Aufgabe vorhersehbar ist und mit hohen Privilegien ausgeführt wird, könnte ein Angreifer das Skript, das die Aufgabe ausführen soll, durch bösartigen Code ersetzen.
  • Auditierung und Rechenschaftspflicht — Es ist unerlässlich, detaillierte Protokolle über die Erstellung, Änderung und Ausführung geplanter Aufgaben zu führen, um bösartige Aktivitäten zu erkennen und darauf zu reagieren.
  • Denial of Service – Indem Aufgaben geplant werden, die zu kritischen Zeiten übermäßige Systemressourcen verbrauchen, könnte ein Angreifer die Fähigkeit des Hostsystems, seine vorgesehenen Funktionen auszuführen, stören.

Scripts mit dem angemessenen Sicherheitskontext ausführen und die Auswirkungen der Verwendung von hochprivilegierten Konten

Um Ihre Angriffsfläche zu minimieren, führen Sie Skripte immer unter einem Konto aus, das die geringsten notwendigen Privilegien für die Aufgabe hat, und vermeiden Sie es, Skripte mit administrativen Rechten auszuführen. Um dies zu erreichen, verstehen Sie, welche Ressourcen, Berechtigungen und Drosselungslimits ein Skript benötigt. Zum Beispiel, muss das Skript Systemdateien ändern, auf bestimmte Daten zugreifen oder über das Netzwerk kommunizieren?

Zusätzlich verwenden Sie Ausführungsrichtlinien, um die Bedingungen zu steuern, unter denen Skripte ausgeführt werden können. Zum Beispiel können Sie das System so einschränken, dass Skripte nur ausgeführt werden, wenn sie von einem vertrauenswürdigen Herausgeber signiert sind.

Für Skripte, die als Dienst ausgeführt werden müssen, sollten Sie die Verwendung eines verwalteten Windows-Dienstkontos (MSA) oder eines Gruppenverwalteten Dienstkontos (gMSA) in Betracht ziehen, die sicherer sind, da ihre Passwörter automatisch verwaltet werden.

Best Practices für das Erstellen von geplanten Aufgaben

Um den Nutzen von geplanten Aufgaben zu maximieren, befolgen Sie diese bewährten Methoden:

  • Stellen Sie sicher, dass jede Aufgabe einen klaren Zweck hat. Dokumentieren Sie sowohl, was die Aufgabe bewirkt, als auch warum sie notwendig ist, um anderen zu helfen, die möglicherweise in Zukunft mit der Aufgabe arbeiten.
  • Legen Sie klare Benennungskonventionen fest. Um Verwirrung und fehlerhafte Aufgabenausführung zu vermeiden, stellen Sie sicher, dass jede geplante Aufgabe einen eindeutigen Aufgabenpfad hat.
  • Überprüfen und testen. Überprüfen Sie Skripte sorgfältig, bevor Sie sie ausführen, insbesondere wenn sie aus externen Quellen stammen, und achten Sie auf verdächtigen Code. Bevor Sie eine geplante Aufgabe in einer Produktionsumgebung einsetzen, testen Sie diese gründlich in einer gestuften oder Entwicklungs-Umgebung. Es ist auch eine gute Praxis, ein Repository genehmigter Skripte zu pflegen.
  • Implementieren Sie die Fehlerbehandlung. Stellen Sie sicher, dass jedes Skript gängige Fehler problemlos verwalten kann und relevante Teammitglieder alarmiert, wenn ein Problem vorliegt, das Aufmerksamkeit erfordert.
  • Verstehen Sie Abhängigkeiten. Wenn eine Aufgabe von externen Diensten oder Daten abhängt, stellen Sie sicher, dass Verfügbarkeitsprüfungen und ein angemessener Umgang mit Ausfällen oder Verzögerungen vorhanden sind.
  • Berücksichtigen Sie die Ressourcennutzung. Suchen Sie nach Möglichkeiten, Aufgaben weniger ressourcenintensiv zu gestalten, indem Sie beispielsweise deren Logik ändern oder die Ausführungshäufigkeit anpassen. Aufgaben sollten so oft wie nötig ausgeführt werden, aber nicht so häufig, dass sie Leistungsprobleme verursachen. Bei der Wahl des Zeitpunkts für die Ausführung von Aufgaben sollten Faktoren wie andere Systemaktivitäten und potenzielle Konflikte berücksichtigt werden.
  • Achten Sie auf Sicherheit. Zusätzlich zu den oben genannten Sicherheitsrichtlinien stellen Sie sicher, dass Sie angemessene Authentifizierungs- und Autorisierungsmaßnahmen für Aufgaben verwenden, die Zugriff auf sichere Ressourcen erfordern, und achten Sie darauf, dass Aufgaben nicht versehentlich sensible Daten freilegen.
  • Vermeiden Sie es, sich auf Standardeinstellungen für kritische Aufgaben zu verlassen. Passen Sie die Konfigurationen der Aufgaben an Ihre spezifischen Bedürfnisse an.
  • Speichern Sie Skripte an einem sicheren Ort. Stellen Sie sicher, dass nur Benutzer, die die Skripte ausführen oder ändern müssen, Zugang haben.
  • Signieren Sie Ihre Skripte. Wenn möglich, signieren Sie Ihre Skripte mit einem digitalen Zertifikat, das von einer vertrauenswürdigen Zertifizierungsstelle (CA) ausgestellt wurde. Dies verifiziert nicht nur die Urheberschaft des Skripts, sondern stellt auch sicher, dass das Skript seit der Signierung nicht verändert wurde.
  • Implementieren Sie Überwachung und Alarmierung. Protokolle sind von unschätzbarem Wert für die Diagnose von Problemen und das Verständnis der Aktionen einer Aufgabe. Werkzeuge, die Administratoren über ungewöhnliche Skriptaktivitäten oder Leistungsabfall informieren, ermöglichen eine schnellere Reaktion.
  • Überprüfen und aktualisieren Sie regelmäßig geplante Aufgaben. Dies beinhaltet das Aktualisieren jeglicher Abhängigkeiten, das Anpassen von Zeitplänen basierend auf neuen Geschäftsanforderungen und das Einstellen von Aufgaben, die nicht mehr notwendig sind.

Fazit

Der Windows Task Scheduler ermöglicht es Geschäftsanwendern und Administratoren, PowerShell-Skripte zu festgelegten Daten und Zeiten regelmäßig auszuführen, wie täglich oder wöchentlich, oder wenn bestimmte Bedingungen erfüllt sind. Die Automatisierung von Aufgaben mit dem Task Scheduler spart Zeit und stellt sicher, dass Aufgaben genau und zuverlässig ausgeführt werden. Fortgeschrittenere Anwender können PowerShell verwenden, um geplante Aufgaben zu erstellen und zu verwalten.

Beim Planen von Skripten stellen Sie sicher, dass Sie bewährte Methoden wie das Dokumentieren des Zwecks der Aufgabe, die Verwendung von Fehlerbehandlung und Protokollierung innerhalb der Skripte befolgen und das Prinzip des least privilege principle anwenden, um übermäßige Berechtigungen zu vermeiden, die eine Sicherheitsbedrohung darstellen können, wenn sie kompromittiert und von Gegnern genutzt werden.

FAQ

Was ist der Windows Task Scheduler?

Windows Task Scheduler ist ein integriertes Tool im Windows-Betriebssystem, das es Benutzern ermöglicht, Aufgaben und Prozesse so einzurichten, dass sie automatisch ausgeführt werden. Mit dem Task Scheduler können Sie Aufgaben so einrichten, dass sie zu einem bestimmten Tag und Zeitpunkt oder in einem bestimmten Intervall wie täglich oder wöchentlich ausgeführt werden.

Warum sollte ich den Task Scheduler verwenden, um PowerShell-Skripte zu automatisieren?

Indem Sie sich dafür entscheiden, PowerShell-Skripte über den Task Scheduler auszuführen, können Sie wiederkehrende Aufgaben automatisieren, was sicherstellt, dass sie zuverlässig und genau ohne weiteren Aufwand Ihrerseits durchgeführt werden.

Wie öffne ich den Aufgabenplaner?

Drücken Sie Win + R um das Ausführen-Dialogfeld zu öffnen. Geben Sie taskschd.msc ein und drücken Sie Enter.

Wie erstelle ich eine neue Aufgabe im Task Scheduler?

Klicken Sie auf Create Task im Aktionsbereich auf der rechten Seite des Fensters Aufgabenplanung. Geben Sie einen Namen und eine Beschreibung für die Aufgabe ein; wählen Sie geeignete Einstellungen für die Registerkarten Aktion, Auslöser, Bedingungen und Einstellungen; und klicken Sie auf Speichern.

Welche Vorteile bietet es, einer Aufgabe einen Namen zu geben und sie zu beschreiben?

Ein nützlicher Name und eine klare Beschreibung, die erklärt, was die Aufgabe bewirkt und warum sie benötigt wird, helfen sicherzustellen, dass jede Aufgabe einen klaren Zweck hat und erleichtern die zukünftige Wartung durch andere, die mit der Aufgabe arbeiten.

Wie bestimme ich den Auslöser für eine geplante Aufgabe?

Auf dem Trigger-Tab für eine Aufgabe können Sie festlegen, wann die Aufgabe ausgeführt werden soll, beispielsweise nach Zeitplan, beim Systemstart oder bei der Benutzeranmeldung, sowie das Wiederholungsintervall und andere Kriterien.

Wie konfiguriere ich den Task Scheduler, um ein PowerShell-Skript auszuführen?

  1. Gehen Sie zum Tab „Actions“, klicken Sie auf „New“ und wählen Sie „Start a program“ aus dem Dropdown-Menü aus.
  2. In the Program/script field, input powershell.exe.
  3. Im Feld „Add arguments“ geben Sie Folgendes ein und ersetzen Sie das Argument „InstallofSoftware.ps1“ durch den Namen Ihres Skripts:
      -File C:\Scripts\InstallofSoftware.ps1
      

Wie kann ich Aufgaben einrichten, damit sie auch dann ausgeführt werden, wenn der Benutzer nicht angemeldet ist?

Auf dem Allgemeinen Tab der Aufgabe wählen Sie die Option Run whether a user is logged on or not.

Wie verwalte ich Aufgabenprivilegien und stelle sicher, dass Skripte nach einer festgelegten Dauer stoppen?

Aufgaben haben die Privilegien des Kontos, unter dem sie ausgeführt werden. Sie können das Konto, unter dem die Aufgabe ausgeführt werden soll, auf der Registerkarte 'Allgemein' festlegen.

Um sicherzustellen, dass ein Skript nach einer bestimmten Dauer stoppt, wählen Sie auf der Registerkarte Einstellungen die Option Stop the task if it runs longer than und wählen Sie die gewünschte Anzahl an Stunden oder Tagen aus.

Wie kontrolliere ich die Sichtbarkeit der Skriptausführung?

Sie können die Ausführung und Sichtbarkeit von Skripten steuern, indem Sie den Parameter -NoExit oder -Command im Feld Add Argument auf dem Aktions-Tab hinzufügen.

Welche Tipps können helfen, Aufgaben zu diagnostizieren, die nicht wie erwartet ausgeführt werden?

Das Ablaufen von Passwörtern oder Änderungen können dazu führen, dass eine Aufgabe fehlschlägt. Falsch konfigurierte oder bösartig entworfene geplante Aufgaben (zum Beispiel Aufgaben, die übermäßige Systemressourcen verbrauchen) können zu einer Dienstverweigerung auf dem Hostrechner führen, was dessen Verfügbarkeit und Leistung beeinträchtigt.

Wie ändere ich eine bestehende geplante Aufgabe?

Klicken Sie mit der rechten Maustaste auf die Aufgabe in der Bibliothek des Windows Task Scheduler, wählen Sie Eigenschaften und nehmen Sie die gewünschten Änderungen an den Einstellungen der Aufgabe vor.

Wie lösche ich eine geplante Aufgabe?

Klicken Sie mit der rechten Maustaste auf die Aufgabe in der Aufgabenplanungsbibliothek und wählen Sie Delete.

Welche Vorteile bietet die Verwendung von PowerShell für die Aufgabenplanung?

Im Vergleich zur Task Scheduler GUI bietet PowerShell eine feinere Kontrolle über die Aufgabenkonfiguration, Fehlerbehandlung und Protokollierung und erleichtert die Definition von benutzerdefinierter Zeitplanungslogik. PowerShell ermöglicht es Ihnen auch, Aufgaben von einem zentralen Ort aus auf mehreren entfernten Systemen zu planen und auszuführen.

What are the New-ScheduledTaskTrigger and Register-ScheduledTask cmdlets used for?

The New-ScheduledTaskTrigger cmdlet is used to define triggers for the task, and the Register-ScheduledTask cmdlet is used to register the task with Windows Task Scheduler.

What are the security implications of scheduled tasks?

Running a scheduled task with a highly privileged accounts increases security risks if the account is compromised, so always choose the account with the least privilege principle in mind.

How should I run scripts with the appropriate security context?

Most important, run scripts under an account with the least privileges necessary to complete the task, and use managed service accounts (MSAs) or group managed service accounts (gMSAs) when appropriate. Consider using execution policies to allow restrict only scripts that are signed by a trusted publisher, and whenever possible, sign your scripts with a digital certificate issued by a trusted Certificate Authority.

What are the best practices for organizing and managing scheduled tasks?

Key best practices include storing scripts in a secure location with access permissions controlled and evaluating scripts in a test environment before implementing them in production.

FAQ

Teilen auf

Erfahren Sie mehr

Über den Autor

Asset Not Found

Tyler Reese

VP of Product Management, CISSP

Mit mehr als zwei Jahrzehnten in der Software-Sicherheitsbranche ist Tyler Reese bestens vertraut mit den sich schnell entwickelnden Identitäts- und Sicherheitsherausforderungen, denen Unternehmen heute gegenüberstehen. Derzeit ist er als Produktleiter für das Netwrix Identity and Access Management Portfolio tätig, wo seine Aufgaben die Bewertung von Markttrends, die Festlegung der Richtung für die IAM-Produktlinie und letztendlich die Erfüllung der Bedürfnisse der Endanwender umfassen. Seine berufliche Erfahrung reicht von IAM-Beratung für Fortune-500-Unternehmen bis hin zur Arbeit als Unternehmensarchitekt eines großen Direkt-an-Verbraucher-Unternehmens. Derzeit hält er die CISSP-Zertifizierung.