我正在编写用于使用 rsync 备份 Windows 计算机的 PowerShell 脚本。为此,我正在尝试使用所述脚本中的 WMI 来创建具有写入者参与的非持久卷影副本(显然建议用于备份)。
我从另一个问题(Accessing Volume Shadow Copy (VSS) Snapshots from powershell)中发现了一种创建卷影副本的方法,但是这里给出的示例使用“ClientAccessible”作为上下文参数,这会导致创建一个持久的Shadow Copy,没有作者参与。
在寻找解决方案时,我发现我可以使用以下命令来获取上下文列表,我假设 WMI 可以理解:
Get-WmiObject win32_shadowcontext | Out-GridView
它确实列表有一个名为“备份”的上下文,这很方便我想要的。我继续尝试使用该上下文创建非持久性卷影副本:
$shadow = (Get-WmiObject -list win32_shadowcopy).Create("C:\", "Backup")
但是,这似乎失败并且$shadow变量的内容设置为
ReturnValue : 5
ShadowID : {00000000-0000-0000-0000-000000000000}
根据相关文档(Win32_ShadowCopy 类的 Create 方法),返回值的意思是“不支持的卷影复制上下文”。
我找不到任何相关文档说明为什么不支持此上下文或是否可以使用它。我也尝试过“FileShareBackup”和“AppRollback”上下文但没有成功。
我假设我要么遗漏了一些明显的东西,要么由于某种原因,WMI 在创建卷影副本时确实不支持“clientAccessible”以外的任何东西,或者这是依赖于操作系统的(我正在 Windows 7、64-少量)
我怎样才能让它工作?