在服务器核心上设置卷影副本的方法

在服务器核心上设置卷影副本的方法

是否存在一些明显的方法,我没有找到如何在运行没有 GUI 的 Windows 系统上为给定驱动器设置定期创建卷影副本?

据我所知,转到磁盘属性的“卷影副本”选项卡并单击“启用”按钮基本上只是创建了几个计划任务。这些计划任务似乎使用每个卷独有的某种 GUID?所以这不是我可以轻松使用组策略完成的事情。

一定有一些简单的方法可以从命令行启用卷影副本,对吗?

答案1

你会认为这应该很容易,不是吗?但你错了。事实并非如此。

所有版本的 Windows Server 2008 R2 都提供共享文件夹的卷影副本。但是,用户界面不适用于服务器核心安装选项。要为安装了服务器核心的计算机创建卷影副本,您需要从另一台计算机远程管理此功能

如果简单是不可能的......请参阅此帖子,他们尝试以困难的方式解决问题。我喜欢让事情自动化,但在这种情况下,我认为这比最初使用 GUI 要费力得多。

答案2

您无需远程配置设置,只需通过组策略创建计划任务即可。正如您所提到的,在常规方法中创建的任务使用卷 ID;其操作如下所示:

vssadmin.exe Create Shadow /AutoRetry=15 /For=\\?\Volume{f9d9bfa1-f506-f24f-f54f-fe6ef47fd6f4}\

因此,您面临的挑战当然是制定一个适用于所有计算机的 GPO。

我建议将您的计划作为一个小型的 powershell 代码片段,用于查找卷 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 行,以便您更轻松地查看发生了什么,但显然如果您打算在没有外部脚本文件的情况下调用任务(这会使事情变得复杂),则必须将所有内容放在一行中。您可以用分号分隔行,您可以将整个卷 ID 检索行嵌入到字符串中$(),等等。

您还可以使用 powershell 的-EncodedCommand参数来处理引用。这样您就可以获得一个可读性好的多行脚本,可以将其放在某个共享位置。您对该脚本进行 base64 编码,然后使用 将整个脚本传递给 powershell -EncodedCommand

如果需要,我可以扩展这些选项,假设此代码可以满足您的需求。

答案3

从服务器操作系统(不是 Windows 10),您可以按照以下步骤操作:

  1. 打开计算机管理。
  2. “连接到另一台计算机”(您的核心服务器)
  3. 扩张系统工具
  4. 右击 S共享文件夹> 点击所有任务> 并点击配置卷影副本

答案4

对于其他经过这么长时间才来到这里的人来说,现在要容易得多。这是我在 Server Core 2019 中所做的

-使用 VSSAdmin 在 C 盘上创建卷影副本

vssadmin add shadowstorage /for=C: /on=C: /MaxSize=10GB

-使用 PowerShell 创建计划任务,每周一至周五每天进行两次复制

$Action=new-scheduledtaskaction -execute "c:\windows\system32\vssadmin.exe" -Argument "create shadow /for=C:"

$TriggerDaysOfWeek=@(
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
)

$Trigger=@(
$(new-scheduledtasktrigger -weekly -DaysOfWeek $TriggerDaysOfWeek -at 11:00AM),
$(new-scheduledtasktrigger -weekly -DaysOfWeek $TriggerDaysOfWeek -at 5:00PM)
)
Register-ScheduledTask -TaskName ShadowCopyC -Trigger $Trigger -Action $Action -Description "ShadowCopyC" -user SYSTEM

相关内容