gpt4 book ai didi

powershell - 在 PowerShell 中使用 "Backup"上下文创建卷影副本

转载 作者:行者123 更新时间:2023-12-03 07:21:15 25 4
gpt4 key购买 nike

我正在编写一个 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 位)。

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

最佳答案

好的,Technoob1984 带来了独家新闻。请参阅我所附的屏幕截图。

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

卷影复制上下文是对象的.properties。

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

https://learn.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 来查看可以用作影子上下文的内容。

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

因此,影子上下文是“标题、计数、描述”以及 .Properties 的“名称:”值下的任何其他内容。我没有将“备份”视为选项之一。

  • 享受

关于powershell - 在 PowerShell 中使用 "Backup"上下文创建卷影副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17601354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com