从PowerShell中访问卷影副本(VSS)快照

我正在尝试在Windows 7中使用Windows Power Shell创build和访问卷影复制快照。我发现可以通过以前的超级用户问题使用以下命令创build快照:

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

我无法find任何文档,指出可以将卷影副本设置为“Exposed”,以便使用WMI将其映射到驱动器号。 在同一个问题中链接的文章显示使用连接来访问快照的黑客攻击。

当我尝试访问符号链接时,我得到以下内容:

 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快照?

Solutions Collecting From Web of "从PowerShell中访问卷影副本(VSS)快照"

你是如何创建符号链接的? 正如那篇文章中所述,您必须指定具有尾部反斜杠的设备路径:

 $s1 = (Get-WmiObject -List Win32_ShadowCopy).Create("C:\", "ClientAccessible") $s2 = Get-WmiObject Win32_ShadowCopy | Where-Object { $_.ID -eq $s1.ShadowID } $d = $s2.DeviceObject + "\" # <-- this here cmd /c mklink /d C:\shadowcopy "$d" 

在此之后,我能够访问安装到C:\shadowcopy的阴影副本就好了。

卸载影子副本调用$s2.Delete() ,如注释中指出的@KeyszerS。