103

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

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

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

Get-WmiObject win32_shadowcontext | Out-GridView

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

$shadow = (Get-WmiObject -list win32_shadowcopy).Create("C:\", "Backup")

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

ReturnValue      : 5
ShadowID         : {00000000-0000-0000-0000-000000000000}

根据相关文档(Win32_ShadowCopy 类的 Create 方法),返回值的意思是“不支持的卷影复制上下文”。

我找不到任何相关文档说明为什么不支持此上下文或是否可以使用它。我也尝试过“FileShareBackup”和“AppRollback”上下文但没有成功。

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

我怎样才能让它工作?

4

2 回答 2

1

好的,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是 'Caption, Count, Description' 和.Properties的 'Name:' 值下的任何其他内容。我不认为“备份”是选项之一。

  • 享受
于 2021-06-04T23:58:54.670 回答
-6

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

在注册表中找到名为volsnap的文件夹,在您的regedit中 搜索.volsnap.sys在该C:\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

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

或创建新代码

Shadow id           $shadow 00000000-0000-0000-0000-0000000000001

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

于 2014-08-23T03:21:52.490 回答