我正在编写 PowerShell 脚本,用于使用 rsync 备份 Windows 计算机。为此,我试图使用来自上述脚本的 WMI 来创建一个有作者参与的非持久性 Shadow 副本(显然是建议备份的)。
我从另一个问题(从 powershell 访问卷阴影拷贝(VSS)快照)中发现了一种通常创建影子副本的方法,但是这里给出的例子使用“ ClientAccess”作为上下文参数,这导致创建一个持久的影子副本,而没有作者的参与。
在寻找解决方案时,我发现可以使用以下命令获取上下文列表,我假设 WMI 能够理解这些上下文:
Get-WmiObject win32_shadowcontext | Out-GridView
这个列表确实有一个名为“ Backup”的上下文,这正是我想要的。我继续尝试使用上下文创建一个非持久的影子副本:
$shadow = (Get-WmiObject -list win32_shadowcopy).Create("C:\", "Backup")
但是,这似乎失败了,而且 $影子变量的内容被设置为
ReturnValue : 5
ShadowID : {00000000-0000-0000-0000-000000000000}
根据相关文档(创建 Win32 _ ShadowCopy 类的方法) ,返回值表示“不支持影子副本上下文”
我找不到任何相关的文档说明为什么这个上下文不受支持,或者是否可以使用它。我还尝试了“ FileShareBackup”和“ AppRollback”上下文,但没有成功。
我想我要么是遗漏了什么显而易见的东西,要么是出于某种原因,在创建影子副本时,WMI 实际上除了“ clientAccess”之外不支持其他任何东西,要么就是它是依赖于操作系统的(我正在 Windows 7上测试这个,64位)
我怎么才能让这个起作用?