Viele Programme erstellen Aufgaben in der Aufgabenplanung, die dann zu den eingestellten Zeiten durchgeführt werden. So zum Beispiel die Updater vom Edge, Google oder Adobe und mehr.
Benny hat nun ein Skript erstellt, mit dem man diese Aufgaben (getestet unter Windows 10) als xml-Datei über PowerShell sichern kann. Denn es kann ja durchaus einmal passieren, dass die Aufgabenplanung (wodurch auch immer) geschrottet wird. In dem Fall könnte man eine erstellte Sicherung (Backup) komplett zurückspielen. Oder eben mit dem Skript von Benny die Aufgaben separat sichern und bei Bedarf zurückimportieren.
Oder als anderes Szenario, wenn man Software neu installieren muss, kann man diese Aufgabe als separates Backup für solche Situationen dann wieder ohne Probleme zurückspielen, nachdem man die Software installiert hat. Und so funktioniert es:
- Backup-Windows-Aufgabenplanung.zip herunterladen und entpacken.
- Im Ordner nun auf den Reiter Datei -> PowerShell -> PowerShell (Administrator) ausführen
- Da die PS1 nicht signiert ist, muss die Signatur erst deaktiviert werden. Diesen Befehl eingeben und mit J (Ja) -> Enter bestätigen
Set-ExecutionPolicy Unrestricted
- Sollte es zu einer Fehlermeldung kommen (Siehe Bild) dann
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force -Scope CurrentUser
- Nun die PS1 starten über
.\Backup-Windows-Aufgabenplanung.ps1
- Die gesicherten Aufgaben landen nun unter C:\PoSh. (PoSh steht hier für PowerShell)
- Ist alles fertig aktiviert man die Signatur wieder und bestätigt es auch hier wieder mit J (Ja) -> Enter. Entweder über
Set-ExecutionPolicy AllSigned
- Oder
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force -Scope CurrentUser
Backup der Aufgaben wieder in die Aufgabenplanung importieren
Um die Aufgaben wieder zurückzuspielen geht man so vor:
- Aufgabenplanung in die Suche der Taskleiste eingeben und starten
- Im Menü Aktion -> Aufgabe importieren
- Im neuen Fenster nun die Aufgabe aus dem Ordner entweder C:\PoSh\Save_ScheduledTasks auswählen und importieren lassen.
Das war es dann auch schon. Als Hinweis von Benny noch hinterher. Es kann sein, dass nicht alle Aufgaben gesichert werden.
Als Nachtrag eine Möglichkeit die Backups wieder zurückzuspielen
Dafür muss man die Eingabeaufforderung (Administrator) starten und diesen Befehl einfügen und Enter drücken
set "DIR=C:\PoSh\Save_ScheduledTasks" cd %temp% dir /b "%DIR%" |SORT /R > list.txt FOR /F " usebackq delims==" %i IN (list.txt) DO schtasks /create /TN "%i" /XML "%DIR%\%i" del list.txt
Wie Benny noch schreibt: „Nachteil: Aufgrund eines Bugs oder des fehlenden Befehls für die Korrektur der *.xml als Import-Name werden diese Aufgaben beim Wiederherstellen eine .xml am Ende stehen haben“
Windows 10 Tutorials und Hilfe
In unserem Windows 10 Wiki findet ihr sehr viele hilfreiche Tipps und Tricks. Falls ihr Fragen habt, dann stellt diese ganz einfach bei uns im Forum.
- Installationsmedien: Aktuelle Installationsdateien findet ihr hier immer in der rechten Sidebar. Windows 10 2004 ISO (19041), oder 20H2 (2009) ISO (19042)
- Installation: Windows 10 Clean installieren, Win 10 2004 neu installieren
- Aktuelle Probleme mit der: Windows 10 2004
- Reparaturen: Inplace Upgrade Reparatur, Win 10 reparieren über DISM, sfc und weiteres, Windows Update reparieren, Startmenü reparieren, Apps reparieren, Store reparieren, Netzwerk reparieren
- Anmeldung: Win 10 automatische Anmeldung
- Entfernen, Deinstallieren: Apps deinstallieren
- Datei Explorer: Ordner unter Dieser PC entfernen, Netzwerk, OneDrive u.a. im Explorer entfernen
- Richtige Nutzung: Startmenü richtig nutzen, Suche richtig nutzen,
- Wichtig: In jedem Tutorial steht, für welche Version es geeignet ist.
Danke an Benny und natürlich an die Deskmodder. Auf so etwas habe ich schon lange gewartet.
Hier gleich auch noch einen Verbesserungsvorschlag:
das mit dem Signieren ist ja ein wenig umständlich.
Ich löse das mit dem kleinen cmd-Skript, welches den gleichen Namen tragen muss, wie das Ps1-Script. Im vorliegenden Falle also „Backup-Windows-Aufgabenplannung“.
In dem cmd-Script steht dann:
@ECHO OFF
PowerShell.exe -NoProfile -Command „& {Start-Process PowerShell.exe -ArgumentList ‚-NoProfile -ExecutionPolicy Bypass -File „“%~dpn0.ps1″“‚ -Verb RunAs}“
Beides (cmd-Script und ps1.script) müssen im gleichen Verzeichnis sein.
Dann einfach das cmd-Script aufrufen und Voilà!: das Ps1-Script wird ohne weiteres zutun ausgeführt.
Ist übrigens nicht von mir. Das habe ich mir beim Chip App Remover abgeschaut.
https://www.chip.de/downloads/Windows-10-App-Remover_93703398.html
Gleich noch eine Frage hinterher:
wie geht das mit dem Zurückspielen? Gibt es da auch ein Script?
sorry, gerade gesehen:
es muss nicht cmd-Script, sondern eine *.bat sein. Weiß nicht, ob das einen Unterschied macht. Aber es ist bei mir (und bei Chip) nun mal eine *.bat. Also „Backup-Windows-Aufgabenplannung.bat“
cmd und bat sind beides die Endungen für Windows Stapeldateien. Ganz früher gab es nur bat und später hat dann Microsoft cmd hinzugefügt. Dies macht aber letztlich keinen Unterschied, da beide von dem Windows-Programm cmd.exe auf identische Weise ausgeführt werden.
Für PowerShell enden die auszuführenden Skriptdateien immer auf ps1. Vermutlich heißen die so, damit man sie nicht mit den PostScript-Dateien ps verwechselt.
gepostet mit der Deskmodder.de-App
wie wärs mit nem ps1
„wie wärs mit nem ps1 “
ich denke, wenn du den Artikel richtig gelesen hast, dann wirst du feststellen, dass es hier grds. um ein Powershell-Script (Endung *.ps1) geht.
Desweiteren geht es nur darum, wie dieses Script ohne manuelle Signatur aufgerufen werden kann (dazu mein Beitrag).
Viel einfacher ist die Richtlinie RemoteSigned global zu verwenden und stehen zu lassen. Damit werden lokale Skripte zugelassen und Fernsteuerung verhindert. Dadurch entfällt auch ein unnötige Aufruf via einer zusätzlichen Batchdatei.
Set-ExecutionPolicy RemoteSigned
Auf diesem Wert kann die Richtlinie verbleiben. Installiert man in Windows die Entwicklererweiterung ist dies der von Windows vorgeschlagene Wert. Für Privat-PCs sicher der einfachste Weg.
gepostet mit der Deskmodder.de-App
Funktioniert (soweit) wie es soll – man sollte aber bzw. wäre besser – wenn man die entsprechenden Verzeichnisse anpasst (z.B. externe Platte) , weil meines Erachtens ist so ein „Backup“ nicht sehr sinnvoll auf dem Systemdatenträger
– abgesehen davon, das man auch über die Aufgabenplanung diese Sicherung machen kann
(allerdings dann nur mit Rechtsklick auf jeden einzelnen Eintrag und dann auf exportieren klickt). So habe ich das bis jetzt immer gemacht, gerade bei den (vielen) Einträgen von portablen Programmen etc.
es hat mir keine Ruhe gelassen:
warum soll ich die Tasks per Powershell exportieren, aber nicht auch per PS importieren?
Deshalb habe ich mal etwas recherchiert und festgestellt, es gibt da auch etwas von Ratio… äh Microsoft:
https://gallery.technet.microsoft.com/scriptcenter/PowerShell-Bakcup-and-e4482583
Ich habe das heruntergeladene PS-Script in Backup-Restore-ScheduledTasks.ps1 umbenannt.
Die Execution Policy wie oben beschrieben angepasst.
Dann erfolgt der Aufruf zum Sichern wie folgt:
.\Backup-Restore-ScheduledTasks.ps1 -BackupRestore Backup -Path C:\Scripts
Das Restore dann über:
.\Backup-Restore-ScheduledTasks.ps1 -BackupRestore Restore -Path C:\Scripts
Es werden übrigens genau gleiche viele Tasks gesichert wie mit dem Script von Benny. Wenn also fälschlicherweise etwas nicht mit ins Backup kommt („Als Hinweis von Benny noch hinterher. Es kann sein, dass nicht alle Aufgaben gesichert werden.“), dann besteht dieser Fehler wohl in beiden Lösungen.
Warum einfach wenn es auch kompliziert geht…
Die Tasks sind alle in System32\Tasks gespeichert. Als Backup braucht man nur das Verzeichnis und alles darunter sichern.
Das Skript hat bei mir Aufgaben in Unterverzeichnissen nicht erfasst zudem wohl auf den ersten Blick nicht alle Informationen „kopiert“.
Auch reicht es in der Regel aus, solche Skripte in einer cmd/bat mittels einem Einzeiler wie „Powershell.exe -executionpolicy UnRestricted -File .\script.ps1“ aufzurufen.
Stimmt! Gerade mal ausprobiert. Funktioniert genauso. Wieder etwas dazugelernt. Danke!
Mit dem nachfolgenden Code werden ALLE Aufgaben exportiert und gesichert:
Die Ausführungsrichtlinie sollte entweder so
Set-ExecutionPolicy RemoteSigned
oder so
Set-ExecutionPolicy Bypass
gesetzt werden und niemals auf Unrestricted.
Hab es mal bearbeitet, damit die Anführungszeichen auch richtig gesetzt sind, falls es jemand ausprobieren möchte.
so läuft es perfekt 👍 – hab nur den Dateipfad modifiziert, nur noch Rechtsklick auf mit Powershell ausführen und fertig
Danke!
Es werden jetzt 214 Task gesichert anstelle vorher deren 9.
Funktioniert soweit.
Ich habe lediglich Probleme mit der Sicherheitsrichtlinie.
Bei mir hilft nur „Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force -Scope CurrentUser“, andernfalls bekomme ich immer eine Fehlermeldung. Möglicherweise habe ich da in der Vergangenheit zuviel drin rumgespielt.
Kann man die irgendwie „resetten“?
Und kann man mit einem ähnlichen PS-Script die Sache auch wieder zurückspielen?
Reicht es „Import-ScheduledTask“ dort einzusetzen? Ich hab´s nicht ausprobiert, weil ich mir mein Sstem nicht zerschießen möchte.
Keine Ursache.
Keine Ahnung, was da bei dir mit dem Setzen der Ausführungsrichtlinie schiefläuft. Bei mir funktioniert es.
Du kannst aber durchaus „Unrestricted“ setzen, solltest die aber möglichst zeitnah wieder auf eine strengere zurücksetzen.
Dabei ist zu beachten, dass die PS-Konsole mit Adminrechten ausgeführt werden muss.
In der PS-Konsole wird mit Get-ExecutionPolicy die global gültige Richtlinie angezeigt.
Mit Get-ExecutionPolicy -Scope CurrentUser
sowie
Get-ExecutionPolicy -Scope LocalMachine
die entsprechenden lokal gesetzten Richtlinien.
Das Importieren aller vorhandenen Tasks ergibt irgendwie keinen Sinn. Bei einem Neuinstallieren des OS werden die Windows-Tasks automatisch wieder neu angelegt.
Lediglich die Tasks der Anwendungen, die man installieren möchte -und natürlich die selbst erstellten- zu sichern, ergäbe Sinn. Die kann man dann gezielt auswählen und ggf. wieder zurückspielen.
Das Zurückspielen aller vorhandenen Tasks müsste mit dem Skript von Benny aber trotzdem funktionieren. Ich habe es selbst zwar nicht getestet, es sollte aber zu keinen Problemen im System führen.
ein einfaches
Get-ExecutionPolicy -Scope CurrentUser
und
Get-ExecutionPolicy -Scope LocalMachine
wurde mit einer Fehlermeldung quittiert:
„Die Ausführungsrichtlinien wurden von Windows PowerShell erfolgreich aktualisiert, die
Einstellung wird jedoch von einer in einem spezielleren Bereich definierten Richtlinie überschrieben.“
mit
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force -Scope CurrentUser
und
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force -Scope LocalMachine
hat es dann funktioniert.
„Das Importieren aller vorhandenen Tasks ergibt irgendwie keinen Sinn. Bei einem Neuinstallieren des OS werden die Windows-Tasks automatisch wieder neu angelegt.“
O.k. verstehe. Ich dachte das wäre kein Problem, wenn Standard-Tasks mit einem Backup „überschrieben“ werden.
„Viele Programme erstellen Aufgaben in der Aufgabenplanung, die dann zu den eingestellten Zeiten diese Aufgaben durchgeführt werden.“
@moinmoin, liest du eigentlich gelegentlich selbst, was du schreibst? Was für ein Satz.
Recht hat er. Mir würde es auch so besser gefallen:
Viele Programme erstellen Aufgaben in der Aufgabenplanung, die diese zu definierten Zeiten ausführen.
Macht dann auch mehr Sinn dieser Satz xD
Cooles Script.
Noch cooler wäre es wenn man z.B. einen selbst erstellten Ordner aus der Aufgabenplanung speichern könnte.
So wie ich es verstanden habe werden alle Aufgaben gesichert.
Grüße Dirk