2013-07-11 41 views
29

我正在编写用于使用rsync备份Windows计算机的PowerShell脚本。为此,我试图从所述脚本中使用WMI来创建一个非持久性的影子拷贝,并且有作者参与(显然建议用于备份)。在PowerShell中使用“Backup”上下文创建卷影副本

我从另一个问题(Accessing Volume Shadow Copy (VSS) Snapshots from powershell)的方式来创建一般卷影副本发现,但鉴于那里的例子使用“ClientAccessible”作为环境参数,这导致创建一个持久的卷影副本,没有作家参与。

在寻找解决的办法,我发现,我可以使用下面的命令来获取上下文的列表,我假设通过WMI理解:

Get-WmiObject win32_shadowcontext | Out-GridView 

它列表已经上下文命名为“备份“,这是我想要的方便。我开始尝试创建一个非持久的卷影副本使用方面:

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

然而,这似乎忽视和$影子变量的内容设置为

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

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

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

我假设我要么丢失了一些明显的东西,或者出于某种原因,WMI在创建卷影副本时确实不支持“clientAccessible”以外的其他任何内容,或者这取决于操作系统(我在Windows 7上测试此操作,64位)

我该如何得到这个工作?

+2

我只是自己写了同样的东西(但是它与C#和库AlphaVSS一起),下面是我学到的东西:您将需要挂载快照以使文件同步它,但要挂载快照必须将'NoAutoRelease'标志设置为'true'。同样为了让'NoAutoRelease'设置为true,你必须将'Persistent'设置为'true',所以只需要一个fyi,所以你不用花费太多时间来尝试获取除ClientAccessable之外的其他东西('ClientAccessable')两个变量设置为“true”) –

+0

将NoAutoRelease设置为False创建的卷影副本在请求它们的进程结束时自动删除([link](http://msdn.microsoft.com/zh-cn/library/windows/desktop /aa394427(v=vs.85).aspx))。我最初怀疑这是我看到的问题,但事实是我与AppRollback上下文有相同的问题,这表明它可能并非如此。但总的来说,可以按照[链接](http://www.goodjobsucking.com/?p=62)中所述安装自动释放卷影副本。不过,我宁愿使用powershell,而不是在那里提出的解决方案。 –

+2

如果您无法使WMI正常工作,也许尝试将[AlphaVSS程序集](http://alphavss.codeplex.com/)加载到Powershell中。 [这里是如何创建一个快照,装载它,并在C#中删除它](http://pastebin.com/XhVLyq0m),你应该能够将它转换为PowerShell。 –

回答

1

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

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

这证实了它的真实性。 volsnap.sys似乎是由EXE-Packer压缩的文件。这种技术经常被木马用来保持文件的大小,同时也妨碍了调试工作。

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

阴影ID默认 00000000-0000-0000-0000-000000000000 00000000-0000-0000-0000-000000000005

,如果它已经拥有500它有可能犯规将其更改为1

或创建新的代码

阴影ID $阴影00000000-0000-0000-0000-0000000000001

不完全一样shown.you可能必须尝试不同的充措辞林不知道是否会$ w ^扫。如果不尝试js独立版本。