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

时间:2013-07-11 19:02:54

标签: powershell backup wmi shadow-copy

我正在编写PowerShell脚本,用于使用rsync备份Windows计算机。为此,我尝试使用所述脚本中的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位)

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

2 个答案:

答案 0 :(得分:0)

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

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

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

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

shadow id默认                         00000000-0000-0000-0000-000000000000                         00000000-0000-0000-0000-000000000005

如果它已经有5,它可能不会改变为1

或创建新代码

影子ID $ shadow 00000000-0000-0000-0000-0000000000001

不完全如图所示。你可能不得不尝试不同的措辞我不确定$是否有效。如果没有尝试js独立版本。

答案 1 :(得分:0)

好的,Technoob1984 来了。查看我附加的屏幕截图。

这个很棘手,因为你必须使用 x64 版本的 Powershell(位于 system32 而不是 wow64)

Shadow Copy Context 是对象的 .properties。

我也在下面的截图中使用了静态方法。

https://docs.microsoft.com/en-us/previous-versions/windows/desktop/vsswmi/create-method-in-class-win32-shadowcopy

# get existing shadow copies
$shadow = get-wmiobject win32_shadowcopy
"There are {0} shadow copies on this sytem" -f $shadow.count
""

# get static method
$class=[WMICLASS]"root\cimv2:win32_shadowcopy"

# create a new shadow copy
"Creating a new shadow copy"
$class.create("C:\", "ClientAccessible")

# Count again
$shadow = get-wmiobject win32_shadowcopy

因此在那里的示例中,您可能希望使用 $class.Properties 来查看可以用作 Shadow Context 的内容。

查看我的屏幕截图: enter image description here

所以Shadow Context 是“标题、计数、描述”以及.Properties 的“名称:”值下的任何其他内容。我没有将“备份”视为选项之一。

  • 享受