我正在编写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位)
我怎样才能让它发挥作用?
答案 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。
我也在下面的截图中使用了静态方法。
# 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 的内容。
所以Shadow Context 是“标题、计数、描述”以及.Properties 的“名称:”值下的任何其他内容。我没有将“备份”视为选项之一。