[Praxis] Windows 7: Mehr-Generationen Backup mit PowerShell

Wie bringt man Windows 7 bei, mehrere Generationen von Systemabbildern zu erstellen? Wir zeigen, wie es mit Hilfe von PowerShell funktioniert.

Wer sich schon einmal mit den Backup Möglichkeiten seines Windows 7 beschäftigt hat, kommt schnell ins Grübeln wegen der damit einhergehenden Einschränkung, dass immer nur ein Systemabbild erstellt werden kann. Die letzte Sicherung des Systemabbilds wird beim Erstellen eines neuen Systemabbilds jedes mal überschrieben.

Dies ist fast schon sträflich von Microsoft. Denn wenn sich ein Fehler zum Zeitpunkt der letzten Sicherung schon im System befunden hat, spielt man ihn mit dem letzten Backup wieder zurück und hat im Notfall nichts gewonnen. Glücklich ist dann derjenige, der auch noch über ältere fehlerfreie Sicherungen verfügt.

Wir wollen zeigen, wie man unter Anwendung von PowerShell dieses Problem beheben und so seine Backupstrategie verfeinern kann.

Was ist Windows PowerShell?

PowerShell ist ein von Microsoft für die Windows-Administration entwickeltes Kommandozeilen-Werkzeug. Es kennt die aus der Unix-Welt bekannten Pipes und Filter und arbeitet objektorientiert.

Rechenzentren setzen es gerne ein, weil man mit ihm auch eine größere Anzahl von Windows-Servern und Clients zeitsparend administrieren kann.

Ab Windows 7 wird PowerShell in der Version 2.0 vorinstalliert ausgeliefert. Windows 8 bringt die Version 3.0 mit. Für ältere Betriebssysteme wie Windows XP kann man PowerShell kostenlos nachträglich installieren.

Wichtig!

Das Skript kann von jedem sowohl privat als auch geschäftlich frei verwendet und verändert werden. Die Verwendung geschieht immer auf eigene Gefahr.

Was wollen wir eigentlich tun?

Ziel soll es sein, vier Generationen des wöchentlichen Systemabbild eines Windows 7 Systems auf einem Netzlaufwerk abzulegen. D.h. im Notfall stehen einem die Sicherungen der letzten 4 Wochen zu Verfügung, aus denen man das passende Systemabbild für eine Wiederherstellung wählen kann.

Voraussetzung ist, dass auf einem NAS eine Freigabe existiert, auf die der Windows User schreibend zugreifen darf.

Im ersten Schritt bereiten wir unser Windows 7 für die Ausführung von PowerShell-Skripten vor, schreiben im zweiten Schritt ein Skript für die Sicherung und erstellen im dritten Schritt eine wiederkehrende Aufgabe, mit der die Sicherung wöchentlich angestoßen wird.

Das Einzige was man hierfür braucht ist ein Editor - oder man verwendet die PowerShell ISE zum Anpassen des Skripts an die eigenen Bedürfnisse.

Wer es einfach mag, springt zum Ende des Artikels, holt sich mit Copy Paste das Skript ab, ändert ein oder zwei Variablen - fertig.

Erstelle einen neuen Thread im Artikel-Forum über dieses Thema
Dieser Thread ist für Kommentare geschlossen
9 Kommentare
Im Forum kommentieren
    Dein Kommentar
  • alterSack66
    Ich dachte immer man kann bei Windows 7 auswählen, ob das ältere Systemabbild beibehalten wird. Ist bei mir zumindest so.
    0
  • ChrisJ
    @alterSack66: Dies gilt nur für Systemabbilder, die man auf eine Platte ablegt. Legt man diese auf einem Netzwerkshare ab, wird nur das aktuelleste Systemabbild beibehalten.
    0
  • alterSack66
    Ok :)
    0
  • thomas19482
    Ich das Script so übernommen wie angegeben, scheitere aber an der letzten Zeile:
    PS D:\> .\thgwsa.ps1
    Verzeichnis: D:\
    invoke-expression : In Zeile:1 Zeichen:144
    + ... \" -allCritical"
    + ~
    Die Zeichenfolge hat kein Abschlusszeichen: ".
    In D:\thgwsa.ps1:59 Zeichen:1
    + invoke-expression -command "wbadmin start backup ""-backupTarget:$SAVZ"" -quiet ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ParserError: (:) [Invoke-Expression], ParseException
    + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString,Microsoft.PowerShell.Commands.InvokeExpressionCommand
    Lösche ich das dritte " hinter -allCritical bleibt als Fehler noch das:
    In D:\thgwsa.ps1:59 Zeichen:28
    + invoke-expression -command "wbadmin start backup ""-backupTarget:$SAVZ"" -quiet ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Die Zeichenfolge hat kein Abschlusszeichen: ".
    + CategoryInfo : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
    Wo liegt das Problem?
    0
  • ChrisJ
    @Thomas19482: Du hast Post
    0
  • ChrisJ
    Ich vermute mal einen Copy-Paste Fehler. Habe es eben nochmal getestet - klappt bei mir einwandfrei.
    Müsste mir das Skript mal direkt anschauen.
    0
  • thomas19482
    Ich das Script so übernommen wie angegeben, scheitere aber an der letzten Zeile:
    PS D:\> .\thgwsa.ps1
    Verzeichnis: D:\
    invoke-expression : In Zeile:1 Zeichen:144
    + ... \" -allCritical"
    + ~
    Die Zeichenfolge hat kein Abschlusszeichen: ".
    In D:\thgwsa.ps1:59 Zeichen:1
    + invoke-expression -command "wbadmin start backup ""-backupTarget:$SAVZ"" -quiet ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ParserError: (:) [Invoke-Expression], ParseException
    + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString,Microsoft.PowerShell.Commands.InvokeExpressionCommand
    Lösche ich das dritte " hinter -allCritical bleibt als Fehler noch das:
    In D:\thgwsa.ps1:59 Zeichen:28
    + invoke-expression -command "wbadmin start backup ""-backupTarget:$SAVZ"" -quiet ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Die Zeichenfolge hat kein Abschlusszeichen: ".
    + CategoryInfo : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
    Wo liegt das Problem?
    0
  • ChrisJ
    Problem gelöst: Skript läuft nicht gegen eine Festplatte. Dort lässt wbadmin keine Sicherung in ein Unterverzeichnis zu. (Hierfür ist das Skript nicht gedacht, da man bei einer Sicherung auf einer Platte mehrere Generationen erstellen lassen kann)
    Das Skript ist für Sicherung auf Netzwerkfreigaben vorgesehen - hier lässt die "Sichern und Wiederherstellung" von Windows 7 nur ein Systemabbild zu und überschreibt dieses immer wieder.
    Bitte wo für die Variable $SAZielVZ steht eine Netzwerkfreigabe eingeben und keinen Laufwerksbuchstaben.
    0
  • thomas19482
    Danke schön! :)
    0