windows - Acceder a instantáneas de Volume Shadow Copy(VSS) de powershell
volume-shadow-service (1)
¿Cómo se creó el enlace simbólico? Como se describe en ese artículo, debe especificar la ruta del dispositivo con una barra invertida final:
$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"
Después de esto, pude acceder a la instantánea montada en C:/shadowcopy
muy bien.
Para desmontar la copia $s2.Delete()
llame a $s2.Delete()
, como @KeyszerS señaló en los comentarios.
Intento crear y acceder a una instantánea de Volume Shadow Copy utilizando Windows Power Shell en Windows 7. Descubrí que puedo crear instantáneas usando lo siguiente a través de una pregunta anterior de superusuario :
(Get-WmiObject -list win32_shadowcopy).create("C:/","ClientAccessible")
No puedo encontrar ninguna documentación que indique que es posible establecer una copia sombra en "Expuesto" para que se pueda asignar a una letra de unidad mediante WMI
. Un artículo vinculado en la misma pregunta muestra un truco usando un cruce para acceder a la instantánea.
Cuando intento acceder al enlace simbólico, obtengo lo siguiente:
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
Intentar acceder a la instantánea directamente da lo siguiente:
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
¿Cómo puedo acceder a una instantánea de VSS desde un script de PowerShell?