gpt4 book ai didi

windows - 从 powershell 访问卷影复制 (VSS) 快照

转载 作者:可可西里 更新时间:2023-11-01 12:20:22 25 4
gpt4 key购买 nike

我正在尝试使用 Windows 7 中的 Windows Power Shell 创建和访问卷影复制快照。我发现我可以通过之前的 superuser question 使用以下命令创建快照:

(Get-WmiObject -list win32_shadowcopy).create("C:\","ClientAccessible")

我找不到任何文档表明可以将卷影副本设置为“公开”,以便可以使用 WMI 将其映射到驱动器号。一个article同一问题中的链接显示了使用联结访问快照的黑客行为。

当我尝试访问符号链接(symbolic link)时,我得到以下信息:

PS C:\Windows\system32> ls C:\shadowcopy
Get-ChildItem : The parameter is incorrect.

At line:1 char:3
+ ls <<<< C:\shadowcopy
+ CategoryInfo : ReadError: (C:\shadowcopy:String) [Get-ChildItem], IOException
+ FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand

尝试直接访问快照会得到以下信息:

PS C:\Windows\system32> ls '\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy14'
Get-ChildItem : Paths that begin with \\?\GlobalRoot are internal to the kernel and should not be opened by managed applications.
At line:1 char:3
+ ls <<<< '\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy14'
+ CategoryInfo : NotSpecified: (:) [Get-ChildItem], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.GetChildItemCommand

如何从 powershell 脚本访问 VSS 快照?

最佳答案

您是如何创建符号链接(symbolic link)的?如该文章所述,您必须使用尾部反斜杠指定设备路径:

$s1 = (Get-WmiObject -List Win32_ShadowCopy).Create("C:\\", "ClientAccessible")
$s2 = Get-WmiObject Win32_ShadowCopy | Where-Object { $_.ID -eq $s1.ShadowID }
$d = $s2.DeviceObject + "\\"

然后 $d 是您的音量字母说明符:

cmd /c mklink /d C:\shadowcopy "$d"

在此之后,我就可以正常访问挂载到 C:\shadowcopy 的卷影副本了。

正如@KeyszerS 在评论中指出的那样,要卸载卷影副本调用 $s2.Delete()

关于windows - 从 powershell 访问卷影复制 (VSS) 快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14207788/

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