使用PowerShell中的"备份"上下文创建卷影副本

Jul*_*usa 38 backup powershell wmi shadow-copy

我正在编写PowerShell脚本以使用rsync备份Windows计算机.为此,我试图使用所述脚本中的WMI创建一个具有编写器参与的非持久性Shadow副本(显然建议用于备份).

我从另一个问题(从PowerShell访问卷影复制(VSS)快照)中发现了一种通常创建卷影副本的方法,但是那里给出的示例使用"ClientAccessible"作为上下文参数,这导致创建持久性影子复制,没有作家参与.

在搜索解决方案时,我发现我可以使用以下命令获取上下文列表,我假设WMI理解这些上下文:

Get-WmiObject win32_shadowcontext | Out-GridView
Run Code Online (Sandbox Code Playgroud)

它列表有一个名为"备份"的上下文,这是我想要的方便.我继续尝试使用该上下文创建非持久性卷影副本:

$shadow = (Get-WmiObject -list win32_shadowcopy).Create("C:\", "Backup")
Run Code Online (Sandbox Code Playgroud)

但是,这似乎失败了,$ shadow变量的内容设置为

ReturnValue      : 5
ShadowID         : {00000000-0000-0000-0000-000000000000}
Run Code Online (Sandbox Code Playgroud)

根据相关文档(Win32_ShadowCopy类的Create方法),返回值表示"不支持的卷影副本上下文".

我找不到任何相关文档,说明为什么不支持此上下文或者是否可以使用它.我也尝试了"FileShareBackup"和"AppRollback"上下文没有成功.

我假设我要么缺少明显的东西,要么由于某种原因,WMI在创建卷影副本时不支持"clientAccessible"以外的任何其他内容,或者这是依赖于操作系统的(我在Windows 7上测试这个,64位)

我怎样才能让它发挥作用?

小智 -6

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

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

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

然而,这本身并不足以成为推测恶意意图的理由,因为即使是善意的专业软件生产商也会利用压缩文件。因此,2% 的专家认为此文件可能存在威胁。它造成伤害的可能性很高。请考虑其他用户的附加评论。

  shadow id          default 
                        00000000-0000-0000-0000-000000000000
                        00000000-0000-0000-0000-000000000005
Run Code Online (Sandbox Code Playgroud)

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

或创建新代码

Shadow id           $shadow 00000000-0000-0000-0000-0000000000001
Run Code Online (Sandbox Code Playgroud)

不完全如图所示。您可能必须尝试不同的措辞,我不确定是否$可行,如果不行,请尝试 js 独立版本。

  • 这个答案看来是无稽之谈。问题是未创建卷影副本。我不知道定位 volsnap.sys 文件与此有何关系,也不知道为什么您认为将默认 ID 从空 GUID 更改为 -01 会有帮助。 (7认同)