我正在编写用于使用rsync备份Windows计算机的PowerShell脚本。为此,我尝试使用上述脚本中的WMI创建具有编写者参与的非持久卷影副本(显然建议对备份使用)。

我从另一个问题(Accessing Volume Shadow Copy (VSS) Snapshots from powershell)找到了一种通常创建卷影副本的方法,但是那里给出的示例使用“ClientAccessible”作为上下文参数,这导致创建了持久的卷影副本,而没有编写者的参与。

在寻找解决方案时,我发现我可以使用以下命令来获取上下文列表,我认为WMI可以理解该列表:

Get-WmiObject win32_shadowcontext | Out-GridView

它确实在列表中有一个名为“Backup”的上下文,这正是我想要的。我着手尝试使用该上下文创建一个非持久卷影副本:
$shadow = (Get-WmiObject -list win32_shadowcopy).Create("C:\", "Backup")

但是,这似乎失败了,并且 $ shadow 变量的内容设置为
ReturnValue      : 5
ShadowID         : {00000000-0000-0000-0000-000000000000}

根据相关文档(Create method of the Win32_ShadowCopy class),返回值表示“不支持的卷影副本上下文”。

我找不到任何有关为什么不支持此上下文或是否有可能完全使用它的相关文档。我也尝试了“FileShareBackup”和“AppRollback”上下文,但没有成功。

我以为我或者遗漏了一些明显的东西,或者由于某种原因,WMI在创建卷影副本时确实不支持“clientAccessible”以外的任何东西,或者这取决于操作系统(我正在Windows 7、64-位)

我该如何工作?

最佳答案

您的$shadow的返回值为5,查看错误消息,您的影子ID为全零,您需要使用二进制或dword在注册表中卷影副本的末尾添加1或2。

在regedit搜索中找到名为volsnap的注册表中的文件夹。在C:\Windows\System32\drivers目录中找到volsnap.sys。文件大小为52,352字节。volsnap文件包含Microsoft的数字签名,请确保其正确的字节。

这证实了其真实性。 volsnap.sys似乎是由EXE压缩程序压缩的文件。特洛伊木马经常使用此技术来保持文件较小并妨碍调试工作。

但是,这本身不足以推定恶意的意图,因为即使是有良好意图的专业软件生产商也可以利用压缩文件。因此,所有专家中有2%认为此文件可能是威胁。它可能造成伤害的可能性很高。请考虑其他用户的其他评论。

  shadow id          default
                        00000000-0000-0000-0000-000000000000
                        00000000-0000-0000-0000-000000000005

如果它已经有5个,可能不会将其更改为1个

或创建新代码
Shadow id           $shadow 00000000-0000-0000-0000-0000000000001

您可能必须尝试不同的措辞,但不确定$是否可以使用,否则请尝试js独立版本。

10-05 23:00
查看更多