Aufgabenplanung: Task exportieren und importieren
Die Windows Aufgabenplanung ist für automatisierte Jobs sehr nützlich. Hat man auf einem Computer viele Tasks angelegt und wechselt auf einen neuen Computer, so kann man die geplanten Tasks übertragen. Hierzu verwendet man PowerShell. Mit einem bestimmten Befehl lässt sich ein Task exportieren und natürlich auf dem neuen Computer auch importieren.
Tasks in der Windows Aufgabenplanung
Nutzt man die Windows Suche, so findet man die Aufgabenplanung. Diese ist in vielen Fällen sehr hilfreich, denn man kann PowerShell Scripte, aber auch vieles weitere automatisieren. Doch je nach Anwendungsfall kann es mühselig sein einen solchen geplanten Task einzurichten. Möchte man diese geplanten Aufgaben nun auf einen neuen Computer übertragen, so hilft ein PowerShell Befehl zum Importieren und Exportieren.
Alle Aufgaben auflisten
Natürlich hab ein Betriebssystem wie Windows jede Menge vordefinierte Aufgaben in der Planung. Eine Liste aller geplanten Tasks kann man mit dem Grund-Befehl Get-ScheduledTask
auflisten.
Wie man sieht ist die Liste relativ lange, jedoch sind das meist Standard-Tasks, welche auf einem Windows Client automatisch generiert werden. Deswegen sind nur die selbst erstellen Aufgaben zum exportieren und importieren wichtig. Diese befinden sich in der Regel in der obersten Ebene “\”.
Task Exportieren mit PowerShell
Zum Exportieren eines Tasks der Aufgabenplanung wird dasPowerShell Cmdlet Export-ScheduledTask
verwendet. Als Parameter muss der Name des Tasks natürlich angegeben werden.
Das Export Format des PowerShell Befehls ist XML. Um die XML Datei abzuspeichern, muss Out-File
verwendet werden. Somit hat man die geplante Aufgabe in eine Datei exportiert.
Export-ScheduledTask -TaskName "Adobe Acrobat Update Task" | Out-File "C:\Users\huberj\Desktop\yourtask.xml"
Möchte man alle Tasks eines Ordners, beziehungsweise einer Ebene exportieren, so benötigt man eine Schleife in PowerShell. Der Hintergrund ist, dass Export-ScheduledTask immer nur einen Task bearbeiten kann.
Get-ScheduledTask -TaskPath "\" | foreach {Export-ScheduledTask -TaskName $_.TaskName -TaskPath "\" | Out-File ($_.TaskName + ".xml") }
Exportiert werden hier die Dateien (Aufgaben der Aufgabenplanung) übrigens in das lokale Benutzerprofil des Benutzers. Dies ist in der Regel “C:\Users\%username%”. Nun kann man die einzelnen Tasks auf einen anderen Computer übertragen, also importieren.
Task importieren mit PowerShell
Da man nun beim Exportieren der Aufgaben eine XML-Datei erhält, so lassen sich diese (mit PowerShell) relativ einfach importieren. Wie schon vermuten lässt, gibt es für den Import das Commandlet Register-ScheduledTask
.
Da man die exportieren Tasks nicht händisch anlegt, sondern eine XML Datei verwendet wird, lautet der PowerShell Befehl bei einer einzelnen Aufgabe wie folgt:
Register-ScheduledTask -xml (Get-Content -Raw C:\Users\huberj\Desktop\yourtask.xml) -TaskName YourTaskName
Hat man davor allerdings mehrere geplante Aufgaben exportiert, so hilft auch hier wieder eine PowerShell Schleife beim Importieren der Dateien:
Get-ChildItem C:\Users\huberj\ *.xml | foreach {Register-ScheduledTask -xml (Get-Content -Raw $_.Name) -TaskName $_.BaseName}
Das Übertragen der Aufgabenplanung von einem zum anderen Computer sollte somit ein Kinderspiel sein.