Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用“创建卷影副本”;备份";PowerShell中的上下文_Powershell_Backup_Wmi_Shadow Copy - Fatal编程技术网

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

使用“创建卷影副本”;备份";PowerShell中的上下文,powershell,backup,wmi,shadow-copy,Powershell,Backup,Wmi,Shadow Copy,我正在编写一个PowerShell脚本,用于使用rsync备份Windows计算机。为此,我正试图使用上述脚本中的WMI创建一个有写入程序参与的非持久性卷影副本(这显然是备份的建议) 我从另一个问题()中找到了一种创建卷影副本的方法,但是这里给出的示例使用“ClientAccessible”作为上下文参数,这导致在没有编写器参与的情况下创建持久卷影副本 在搜索解决方案时,我发现可以使用以下命令获取上下文列表,我假设WMI可以理解这些上下文: Get-WmiObject win32_shadowc

我正在编写一个PowerShell脚本,用于使用rsync备份Windows计算机。为此,我正试图使用上述脚本中的WMI创建一个有写入程序参与的非持久性卷影副本(这显然是备份的建议)

我从另一个问题()中找到了一种创建卷影副本的方法,但是这里给出的示例使用“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}
根据相关文档(),返回值表示“不支持的卷影副本上下文”

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

我假设我遗漏了一些明显的东西,或者出于某种原因,WMI在创建卷影副本时确实不支持“clientAccessible”之外的任何东西,或者这依赖于操作系统(我正在Windows 7上测试,64位)


如何使其工作?

您的
$shadow
返回值为5查看错误消息,您的卷影id为全零,您需要使用二进制或dword将1或2添加到注册表中卷影副本的末尾

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

这证实了它的真实性。volsnap.sys似乎是由EXE打包程序压缩的文件。特洛伊木马经常使用此技术来保持文件大小较小,同时也会妨碍调试工作

然而,这本身并不足以证明恶意意图,因为即使是善意的专业软件生产商也会利用压缩文件。出于这个原因,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单机版。

好的,这里有独家新闻。看到我附加的屏幕截图

这是一个棘手的问题,因为您必须使用x64版本的Powershell(位于system32下,而不是wow64下)

卷影副本上下文是对象的.properties

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

因此,在这里的示例中,您需要使用$class.Properties来查看可以用作阴影上下文的内容

请参见我的屏幕截图:

因此,阴影上下文是.Properties的“标题、计数、描述”和“名称:”值下的任何内容。我不认为“备份”是选项之一

  • 享受

我自己也写了同样的东西(但在C#和AlphaVSS库中写过),下面是我学到的:您需要挂载快照以获得同步文件,但要挂载快照,必须将
NoAutoRelease
标志设置为
true
。另外,要将
NoAutoRelease
设置为true,您必须将
Persistent
设置为
true
,因此仅供参考,这样您就不会花费太多时间试图让
clientaccess
以外的内容工作(
clientaccess
将两个变量都设置为
true
),如果WMI无法工作,也许可以尝试将加载到Powershell中,您应该能够将其翻译到powershell中。我想我可能应该对此作出回应,以利于阅读本文的任何人。简言之:是的,可以使用AlphaVSS来实现我想要的,但这不是一项简单的任务。编写代码以正确支持编写器的备份几乎意味着在PowerShell中重写大部分VShadow,这感觉像是一个毫无意义的练习。无论如何,在使用非持久快照时,关键是在调用BackupComplete()之前执行所有实际备份操作。据我所知,只要调用BackupComplete(),快照就会被销毁。@JulienPicalausa,除非您认为有更好的答案,否则您可能应该粘贴它并将其标记为答案;)你好您是否找到了此卷影复制上下文问题的解决方案?我也有同样的问题,我在PowerShell中编写了一个备份脚本,但它不允许我使用备份上下文。只有ClientAccessible和NASRollback不适合我。这个答案似乎毫无意义。问题是没有创建卷影副本。我不知道查找volsnap.sys文件与此有什么关系,也不知道为什么您认为将默认ID从空GUID更改为-01会有所帮助。这是由GPT编写的吗?这是一个具有大量视图的旧线程。你可以找到很多类似的问题。来自微软的文档令人困惑。这句话就是答案,我保证!!
# 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