从入门文章,我得到了这样的脚本:
strDesc = "Restore Point by script"
Set oArgs = WScript.Arguments
If oArgs.Count > 0 Then strDesc = oArgs(0)
WScript.Echo "Creating Restore Point: " & strDesc
Set oRestorePoint = GetObject("winmgmts:\\.\root\default:SystemRestore")
strResult = oRestorePoint.CreateRestorePoint(strDesc, 0, 100)
If strResult <> 0 Then
WScript.Echo "Error " & strResult & ": Unable to create Restore Point"
WScript.Sleep 444000 'Let user see the result
Else
WScript.Echo "Restore Point created successfully."
WScript.Sleep 2000 'Let user see the result
End If
WScript.Quit strResult
我在 Windows 7 上使用此脚本创建了一个计划任务,让它每天为我创建还原点,并且运行良好。
但在 Windows 8.1/10 上,我发现了一个奇怪的行为。在管理员 CMD 中执行
cscript CreateRestorePoint.vbs
当任何还原点已存在时,不会创建新的还原点(但它仍会打印“还原点已成功创建”)。换句话说,cscript CreateRestorePoint.vbs
只有在我创建还原点后才会创建还原点vssadmin delete shadows /all
,但由于第一个还原点已存在,因此第二次运行cscript CreateRestorePoint.vbs
会失败。——此问题不会发生在 Windows 7 SP1 上。
有人可以解释并修复 Windows 8.1/10 上的这个问题吗?
[[[更新:问题已解决]]]
正如 Ken 在评论中指出的那样,添加注册表项[HKLM\Software\Microsoft\Windows NT\CurrentVersion\SystemRestore] SystemRestorePointCreationFrequency=10
是解决方案(需要重新启动)。从 Windows 8 开始,Microsoft 默认每 24 小时只允许创建一个还原点。SystemRestorePointCreationFrequency=10
将该限制减少到 10 分钟。请参阅此 MSDN 页面。
答案1
对于 Windows 8.1 和 10 来说,使用 power shell 要容易得多。它们都有它,你可以创建一个单行程序并命名它。
需要注意的是...您每 24 小时只能运行一次检查点。
将此行放在记事本中,并将文件保存为 CreateCheckpoint.ps1(确保该文件未保存为 CreateCheckpoint.ps1.txt)。
Checkpoint-Computer -Description "Daily Restore Point"
转到管理员命令提示符并输入 powershell。将弹出一个窗口。只需转到文件路径并输入 ./createcheckpoint.ps1,它就会创建还原点。
如果此操作有效,它将在您的列表中显示还原点。如果您想将其放入计划任务中,请创建一个 run.bat 文件并将这些行放入其中。将下面的路径更改为您放置 ps1 文件的位置。您需要以管理员身份运行 bat 文件。
@ECHO OFF
PowerShell.exe -command "& c:\restorepoint.ps1 -description 'DailyRP'"
PAUSE