¿Cómo encontrar y abrir versiones anteriores de una carpeta mediante programación (usando PowerShell, WMI, etc.)?

18

Estoy ejecutando Windows 8 Enterprise x64. Cuando abro \\localhost\c$como una carpeta de red, y luego, usando un menú contextual, abro la ventana Propiedades de una subcarpeta (por ejemplo, \\localhost\c$\Deploycomo en el ejemplo a continuación), está la pestaña Versiones anteriores donde puedo ver una lista de las versiones anteriores disponibles de la carpeta, junto con las marcas de tiempo correspondientes:

Pestaña Versiones anteriores


Si selecciono una versión y hago clic en el botón Abrir , se abre una nueva ventana del Explorador donde puedo examinar la versión anterior seleccionada de la carpeta:

Ubicación en la pestaña General


La barra de direcciones muestra una ubicación donde se agrega una marca de tiempo (en un formato largo legible por humanos) a cada nombre de carpeta. Esta ubicación, si se copia desde allí, no se puede usar directamente como una ruta válida en otra ventana del Explorador o una herramienta de línea de comandos. Pero si abro la ventana Propiedades de un subpiso, entonces muestra una ubicación de la subcarpeta en forma similar \\localhost\c$\@GMT-2013.08.27-04.01.18\Deploy. Este formulario se puede usar tanto en el Explorador como en la línea de comando:

C:\>dir \\localhost\c$\@GMT-2013.08.27-04.01.18\Deploy /s
 Volume in drive \\localhost\c$ is OSDisk
 Volume Serial Number is ▨▨▨▨-▨▨▨▨

 Directory of \\localhost\c$\@GMT-2013.08.27-04.01.18\Deploy

04/11/2013  10:53 AM    <DIR>          .
04/11/2013  10:53 AM    <DIR>          ..
04/11/2013  10:53 AM    <DIR>          Tools
               0 File(s)              0 bytes

 Directory of \\localhost\c$\@GMT-2013.08.27-04.01.18\Deploy\Tools

04/11/2013  10:53 AM    <DIR>          .
04/11/2013  10:53 AM    <DIR>          ..
04/11/2013  10:53 AM    <DIR>          x64
               0 File(s)              0 bytes

 Directory of \\localhost\c$\@GMT-2013.08.27-04.01.18\Deploy\Tools\x64

04/11/2013  10:53 AM    <DIR>          .
04/11/2013  10:53 AM    <DIR>          ..
08/30/2012  06:10 PM           325,272 ▨▨▨▨▨▨▨▨.dll
               1 File(s)        325,272 bytes

     Total Files Listed:
               1 File(s)        325,272 bytes
               8 Dir(s)  70,546,321,408 bytes free

Y también en PowerShell:

PS C:\> pushd \\localhost\c$\@GMT-2013.08.27-04.01.18\Deploy
PS Microsoft.PowerShell.Core\FileSystem::\\localhost\c$\@GMT-2013.08.27-04.01.18\Deploy> ls -r


    Directory: \\localhost\c$\@GMT-2013.08.27-04.01.18\Deploy


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         4/11/2013  10:53 AM            Tools


    Directory: \\localhost\c$\@GMT-2013.08.27-04.01.18\Deploy\Tools


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         4/11/2013  10:53 AM            x64


    Directory: \\localhost\c$\@GMT-2013.08.27-04.01.18\Deploy\Tools\x64


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---         8/30/2012   6:10 PM     325272 ▨▨▨▨▨▨▨▨.dll

Parece que la carpeta con un nombre mágico @GMT-2013.08.27-04.01.18(presumiblemente representando una marca de tiempo en la zona horaria GMT) se comporta como si realmente hubiera salido allí, excepto que no puede descubrir su existencia utilizando el dircomando a menos que ya conozca su nombre. Todos los archivos y carpetas debajo de esta carpeta son de solo lectura: no se puede crear, eliminar, renombrar o cambiar nada (incluidos los atributos y permisos de archivos / carpetas). Si es administrador, pero no tiene permisos para ver ciertos archivos, no puede cambiar eso, a menos que primero logre copiar una carpeta que contenga en una ubicación que no sea de solo lectura.

Pregunta: ¿Es posible obtener la lista de versiones de una carpeta determinada, como la que se muestra en la primera captura de pantalla, y abrir una de ellas en una nueva ventana del Explorador mediante programación (usando PowerShell, WMI, WSH, BAT, Win32 API, etc. )? ¿Es posible obtener la lista de carpetas correspondientes con nombres mágicos como @GMT-2013.08.27-04.01.18 programáticamente?

Vladimir Reshetnikov
fuente

Respuestas:

12

La volrestutilidad, disponible en las herramientas del Kit de recursos de Windows Server 2003 , se puede usar para enumerar las versiones anteriores de una carpeta. Funcionó para mí en Windows 7 y aún debería funcionar en Windows 8. Solo tenga cuidado con sus parámetros, ya que también puede restaurar versiones anteriores.

Un ejemplo de uso (del enlace citado a continuación):

C:\>volrest "\\test220\reports\Annual Reports 2004\doc.4.rtf"

VOLREST 1.1 - Previous Version command-line tool
(C) Copyright 2003 Microsoft Corp.

 Searching previous versions on \\test220\reports\annual report 2004\doc.4.rtf

07/01/2004  01:28 PM    37,786 \\test220\reports\@GMT-2004.07.01-18.34.35\annual 
                           report 2004\doc.4.rtf
07/01/2004  01:27 PM    37,740 \\test220\reports\@GMT-2004.07.01-18.28.02\annual 
                           report 2004\doc.4.rtf
07/01/2004  11:47 AM    37,690 \\test220\reports\@GMT-2004.07.01-18.24.41\annual 
                           report 2004\doc.4.rtf

            3 File(s)  113,216 bytes
            0 Dir(s)

Con el resultado de este programa, que puede usarse con el /Bparámetro para formato simple, debería poder construir un script que explore una de las versiones enumeradas.

Para obtener más información, consulte: Windows Server Hacks: Restauración de instantáneas mediante la línea de comandos .

harrymc
fuente
1

Respuesta tardía, pero lo intenté volresty no parece funcionar en Windows 10. Como observó el OP, la @GMT-yadayadayadacarpeta mágica no aparece hasta que aparezca la carpeta en el Explorador desde la pestaña Versiones anteriores en Propiedades.

Un enfoque que me ha funcionado es utilizarlo mklink. Como administrador en la computadora / servidor en cuestión, abra un símbolo del sistema y escriba vssadmin list shadows:

C:\WINDOWS\system32>vssadmin list shadows
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.

Contents of shadow copy set ID: {5a052a28-96de-4924-b669-9e671b5ce069}
   Contained 1 shadow copies at creation time: 4/07/2019 4:31:12 PM
      Shadow Copy ID: {aaeab260-fef9-4ddc-9190-78d226de07a7}
         Original Volume: (C:)\\?\Volume{010e4355-9f97-4911-99f7-4ef45974b946}\
         Shadow Copy Volume: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
         Originating Machine: DESKTOPPC.domain.local
         Service Machine: DESKTOPPC.domain.local
         Provider: 'Microsoft Software Shadow Copy provider 1.0'
         Type: ClientAccessibleWriters
         Attributes: Persistent, Client-accessible, No auto release, Differential, Auto recovered

Contents of shadow copy set ID: {f2494e05-cb0c-4161-aa67-a545fe562b50}
   Contained 1 shadow copies at creation time: 11/07/2019 3:00:16 AM
      Shadow Copy ID: {c3e0566b-0b39-4080-b5ae-ca6e2a2c56c4}
         Original Volume: (C:)\\?\Volume{010e4355-9f97-4911-99f7-4ef45974b946}\
         Shadow Copy Volume: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2
         Originating Machine: DESKTOPPC.domain.local
         Service Machine: DESKTOPPC.domain.local
         Provider: 'Microsoft Software Shadow Copy provider 1.0'
         Type: ClientAccessibleWriters
         Attributes: Persistent, Client-accessible, No auto release, Differential, Auto recovered

Contents of shadow copy set ID: {aa9f8acb-0a06-4584-9f9e-dee2269b88f3}
   Contained 1 shadow copies at creation time: 19/07/2019 3:45:20 AM
      Shadow Copy ID: {9e3044a8-19e9-4fa8-82ea-b97a836a71d2}
         Original Volume: (C:)\\?\Volume{010e4355-9f97-4911-99f7-4ef45974b946}\
         Shadow Copy Volume: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3
         Originating Machine: DESKTOPPC.domain.local
         Service Machine: DESKTOPPC.domain.local
         Provider: 'Microsoft Software Shadow Copy provider 1.0'
         Type: ClientAccessibleWriters
         Attributes: Persistent, Client-accessible, No auto release, Differential, Auto recovered

Busque el campo Volumen de instantáneas y utilice el siguiente comando para asignar el que necesita a una nueva carpeta (en este caso, el último de la lista):

C:\>mklink /d C:\vsstest \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\
symbolic link created for vsstest <<===>> \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\

Asegúrese de agregar la barra diagonal inversa posterior como lo hice anteriormente, o no funcionará.

Ahora tendrá su propia carpeta mágica para acceder a una versión anterior del contenido de su disco duro:

C:\>dir vsstest
 Volume in drive C is Local Disk
 Volume Serial Number is DEAD-BEEF

 Directory of C:\vsstest

26/06/2018  12:49 PM             1,024 .rnd
01/07/2019  01:01 PM    <DIR>          apps
20/12/2018  10:51 AM    <DIR>          ESD
29/05/2019  09:16 PM    <DIR>          inetpub
29/01/2018  12:33 PM    <DIR>          Intel
19/03/2019  02:52 PM    <DIR>          PerfLogs
04/07/2019  04:32 PM    <DIR>          Program Files
16/07/2019  12:40 PM    <DIR>          Program Files (x86)
30/05/2019  11:26 AM    <DIR>          Scripts
14/06/2019  10:46 AM    <DIR>          temp
16/10/2018  01:12 PM    <DIR>          Tools
28/05/2019  09:19 AM    <DIR>          Users
18/06/2019  09:22 AM    <DIR>          VMs
11/07/2019  03:39 AM    <DIR>          Windows
               1 File(s)          1,024 bytes
              14 Dir(s)  107,573,796,864 bytes free

Para eliminarlo después de que haya terminado, use rmdir.

Aaron Mason
fuente