36539
Goto Top

Systemwiederherstellungt als vbs-Script

Hallo,

ich habe hier ein Codeschnippsel den ich für eine Batch benötige gefunden.

'Unattended System Restore Point  
'sysrestorepoint.vbs  
'© Doug Knox - rev 02/11/2002  
'This code may be freely distributed/modified  
'Downloaded from www.dougknox.com   
'Extracted from original code by Bill James - www.billsway.com  

Set sr = getobject("winmgmts:\\.\root\default:Systemrestore")  

msg = "New Restore Point successfully created." & vbCR  
msg = msg & "It is listed as: " & vbCR  
msg = msg & "Automatic Restore Point " & Date & " " & Time  

'Put a ' in front of the next five lines to disable the Success Failed Prompt.  
If (sr.createrestorepoint("Automatic Restore Point", 0, 100)) = 0 Then  
    MsgBox msg
Else
    MsgBox "Restore Point creation Failed!"  
End If

'Remove the ' from the next 3 lines to only alert you if the process failed  
'If (sr.createrestorepoint("Automatic Restore Point", 0, 100)) <> 0 Then  
'    MsgBox "Restore Point creation Failed!"  
'End If  
Funktioniert soweit einwandfrei, mir fehlt aber eine wichtige Funktion.

Das Script soll innerhalb einer Batch aufgerufen werden. Dazu möchte ich das das Script eine deaktivierte Systemwiederherstellung [1] wieder aktiviert und erst danach den Restor-Punkt erstellt. Könnt ihr mir helfen und und den Code entsprechend ergänzen/ändern?

[1]
Wenn es möglich ist für alle internen vorhandenen Festplatten-LW.
Sollte das nicht so ohne weiteres möglich sein, dann bitte für das erkannte System-LW (SystemDrive)
ich hab zwar hier http://support.microsoft.com/?kbid=295299 was dazu gefunden - habe aber keine Ahnung wie ich das zusammenbastel kann/muss.

Wichtig! - Das Script muss unter allen XP Editionen (Home/Prof.) funktionieren.

Übrigens - MsgBox - Ausgaben sind nicht erforderlich. Die im Script jetzt noch vorhanden blende ich eh z.Zt aus mit Parameter "//B". Können aber auch gleich aus dem Script entfernt werden.

Ich danke Euch

Gruß
onegasee59

Content-Key: 104587

Url: https://administrator.de/contentid/104587

Printed on: April 19, 2024 at 23:04 o'clock

Member: bastla
bastla Dec 22, 2008 at 17:17:38 (UTC)
Goto Top
Hallo onegasee59!

Ungetestet sollte das Einschalten der Systemwiederherstellung etwa so gehen (einfügen nach Zeile 8):
Set fso = CreateObject("Scripting.FileSystemObject")  

Set dc = fso.Drives
For Each d in dc
    If d.DriveType = 2 Then
        r = sr.enable(d.DriveLetter & ":\")  
    End If
Next
Die Auswertung des Returncodes "r" könntest Du bei Bedarf noch ergänzen.

Grüße
bastla
Mitglied: 36539
36539 Dec 23, 2008 at 22:16:45 (UTC)
Goto Top
Hallo bastla,

Aktivieren funktioniert einwandfrei.

Allerdings zeigt er beim 1. Mal Fehler an.
Vermutlich weil das Aktivieren der Systemwiederherstellung etwas dauert und das nachfolgenden Erstellen des Restor-Punkt zu schnell danach folgt
Kann man das irgendwie abfangen, z.Bsp durch einbauen einer kleinen Warteschleife bis die aktivierte Systemwiederherstellung erkannt wird?

Danke und Gruß
onegasee59
Member: bastla
bastla Dec 23, 2008 at 22:22:27 (UTC)
Goto Top
Hallo onegasee59!
... einbauen einer kleinen Warteschleife ...
... ist in VBS nicht nötig - da gibt's sogar eine Methode (im Beispiel für 3 Sekunden):
WScript.Sleep 3000
Grüße
bastla
Mitglied: 36539
36539 Dec 23, 2008 at 22:52:43 (UTC)
Goto Top
Hallo bastla,

vom allerfeinsten wiedermal Deine Hilfe - Tool funktioniert jetzt einwandfrei.

Herzlichen Dank und schönes Weihnachstfest. face-smile

Gruß
onegasee59