有没有一些明显的方法,我没有find如何设置定期创build一个给定的驱动器在没有graphics用户界面的Windows系统上的影子副本?
从我可以告诉去磁盘属性的卷影副本选项卡,然后单击启用button基本上只是创build几个计划的任务。 这些计划的任务似乎使用某种独特的每个卷的GUID? 所以这不是我可以用组策略轻松完成的事情。
必须有一些简单的方法来从命令行启用卷影副本吗?
你会觉得这很容易,不是吗? 那么,你会错的。 不是。
共享文件夹的卷影副本在Windows Server 2008 R2的所有版本中都可用。 但是,用户界面不可用于“服务器核心”安装选项。 要为使用服务器核心安装的计算机创build卷影副本,需要从另一台计算机远程pipe理此function 。
如果简单的事情不存在… 看到这个线程,他们尝试去困难的方式 。 我喜欢自动化的东西,但在这种情况下,我觉得比起刚开始使用GUI来,要更加努力。
您可以通过组策略创build一个计划任务,而不是远程configuration设置。 正如你所提到的,在普通方法中创build的任务使用一个卷ID, 它的行为看起来像这样:
vssadmin.exe Create Shadow /AutoRetry=15 /For=\\?\Volume{f9d9bfa1-f506-f24f-f54f-fe6ef47fd6f4}\
所以当然对于你来说,挑战就是制定一个适用于所有计算机的GPO。
我build议让你的计划是一个小的PowerShell的片段,find卷ID和调用相同的命令。
我打算假设你想为系统驱动器做这个。 在这种情况下,像这样的代码应该可以在PowerShell 2.0+上运行:
$volID = Get-WmiObject Win32_Volume | Where-Object { $_.DriveLetter -ieq $env:SYSTEMDRIVE } | Select-Object -ExpandProperty DeviceID Start-Process 'vssadmin.exe' -ArgumentList "Create Shadow /AutoRetry=15 /For=$volID" -Wait
这在这里显示为2行,所以你可以更容易地看到发生了什么,但显然,如果你打算没有外部脚本文件(这会使事情复杂)调用你的任务,你将不得不在一行。 你可以用分号分隔行,你可以在$()等string中embedded整个卷ID检索行。
你也可以使用powershell的-EncodedCommand参数来处理引用。 这可以让你有一个很好的可读的多行脚本,你可以坐在一个共享的地方。 你base64编码该脚本,然后通过-EncodedCommand将整个事情传递给-EncodedCommand 。
如果需要的话,我可以扩展这些选项,假设这些代码能够满足您的需求。
我的主要问题是,即使安装了RSAT工具,Windows 7.0,8.1也不能在远程系统上configuration卷影副本。
远程GUI方法现在好了,我意识到我必须从Windows服务器运行该工具。 各种脚本和PowerShell的方法来完成这个工作,但我并没有真正需要在大多数情况下。
这是我在PowerShell中使用的 。 它是一个链接到我的网站,但它看起来比它粘贴在这里好很多。
#Enable Volume Shadow copy clear $Continue = Read-Host "Enable Volume Shadowcopy (Y/N)?" while("Y","N" -notcontains $Continue){$Continue = Read-Host "Enable Volume Shadowcopy (Y/N)?"} if ($Continue -eq "Y") { #Enable Shadows vssadmin add shadowstorage /for=C: /on=C: /maxsize=8128MB vssadmin add shadowstorage /for=D: /on=D: /maxsize=8128MB #Create Shadows vssadmin create shadow /for=C: vssadmin create shadow /for=D: #Set Shadow Copy Scheduled Task for C: AM $Action=new-scheduledtaskaction -execute "c:\windows\system32\vssadmin.exe" -Argument "create shadow /for=C:" $Trigger=new-scheduledtasktrigger -daily -at 6:00AM Register-ScheduledTask -TaskName ShadowCopyC_AM -Trigger $Trigger -Action $Action -Description "ShadowCopyC_AM" #Set Shadow Copy Scheduled Task for C: PM $Action=new-scheduledtaskaction -execute "c:\windows\system32\vssadmin.exe" -Argument "create shadow /for=C:" $Trigger=new-scheduledtasktrigger -daily -at 6:00PM Register-ScheduledTask -TaskName ShadowCopyC_PM -Trigger $Trigger -Action $Action -Description "ShadowCopyC_PM" #Set Shadow Copy Scheduled Task for D: AM $Action=new-scheduledtaskaction -execute "c:\windows\system32\vssadmin.exe" -Argument "create shadow /for=D:" $Trigger=new-scheduledtasktrigger -daily -at 7:00AM Register-ScheduledTask -TaskName ShadowCopyD_AM -Trigger $Trigger -Action $Action -Description "ShadowCopyD_AM" #Set Shadow Copy Scheduled Task for D: PM $Action=new-scheduledtaskaction -execute "c:\windows\system32\vssadmin.exe" -Argument "create shadow /for=D:" $Trigger=new-scheduledtasktrigger -daily -at 7:00PM Register-ScheduledTask -TaskName ShadowCopyD_PM -Trigger $Trigger -Action $Action -Description "ShadowCopyD_PM" }