Come trovare e aprire le versioni precedenti di una cartella a livello di codice (usando PowerShell, WMI, ecc.)?


18

Sto eseguendo Windows 8 Enterprise x64. Quando apro \\localhost\c$come una cartella di rete e quindi utilizzando un menu di scelta rapida apro la finestra Proprietà di una sottocartella (ad esempio \\localhost\c$\Deploycome nell'esempio seguente), c'è la scheda Versioni precedenti in cui posso vedere un elenco delle versioni precedenti disponibili della cartella, insieme ai corrispondenti timestamp:

Scheda Versioni precedenti


Se seleziono una versione e faccio clic sul pulsante Apri , viene aperta una nuova finestra di Explorer in cui posso sfogliare la versione precedente selezionata della cartella:

Posizione nella scheda Generale


La barra degli indirizzi mostra una posizione in cui un timestamp (in una forma lunga leggibile dall'uomo) viene aggiunto al nome di ogni cartella. Questa posizione, se copiata da lì, non può essere utilizzata direttamente come percorso valido in un'altra finestra di Explorer o come strumento da riga di comando. Ma se apro la finestra Proprietà di una sottocartella, viene visualizzata una posizione della sottocartella in una forma simile \\localhost\c$\@GMT-2013.08.27-04.01.18\Deploy. Questo modulo può effettivamente essere utilizzato sia in Explorer che nella riga di 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

E anche in 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

Sembra che la cartella con un nome magico @GMT-2013.08.27-04.01.18(che presumibilmente rappresenta un timestamp nel fuso orario GMT) si comporti come se fosse effettivamente uscita lì, tranne per il fatto che non puoi scoprire la sua esistenza usando il dircomando a meno che tu non ne conosca già il nome. Tutti i file e le cartelle al di sotto di questa cartella sono di sola lettura: non è possibile creare, eliminare, rinominare o modificare nulla (compresi gli attributi e le autorizzazioni di file / cartelle). Se sei un amministratore, ma non disponi delle autorizzazioni per visualizzare determinati file, non puoi modificarlo, a meno che tu non riesca prima a copiare una cartella contenente in una posizione non di sola lettura.

Domanda: è possibile ottenere l'elenco delle versioni di una determinata cartella, come quella mostrata nel primo screenshot, e aprirne una in una nuova finestra di Explorer a livello di codice (usando PowerShell, WMI, WSH, BAT, API Win32, ecc. )? È possibile ottenere l'elenco delle cartelle corrispondenti con nomi magici come a livello di @GMT-2013.08.27-04.01.18 programmazione?

Risposte:


12

L' volrestutilità, disponibile dagli strumenti del Resource Kit di Windows Server 2003 , può essere utilizzata per elencare le versioni precedenti di una cartella. Ha funzionato per me su Windows 7 e dovrebbe ancora funzionare su Windows 8. Basta fare attenzione ai parametri, poiché può anche ripristinare le versioni precedenti.

Un esempio di utilizzo (dal link sotto riportato):

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 l'output di questo programma, forse utilizzato con il /Bparametro per il formato nudo, dovresti essere in grado di costruire uno script che esplorerà una delle versioni elencate.

Per ulteriori informazioni, consultare: Hack di Windows Server: ripristino delle copie shadow mediante la riga di comando .


1

Risposta tardiva, ma ho provato volreste non sembra funzionare su Windows 10. Come osservato dall'OP, la @GMT-yadayadayadacartella magica non appare fino a quando non si apre la cartella in Explorer dalla scheda Versioni precedenti in Proprietà.

Un approccio che ha funzionato per me è usare mklink. Come amministratore sul computer / server in questione, apri un Prompt dei comandi e digita 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

Cerca il campo Volume copia shadow e usa il comando seguente per mappare quello che ti serve su una nuova cartella (in questo caso, l'ultimo nell'elenco):

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

Assicurati di aggiungere la barra rovesciata finale come ho fatto sopra, altrimenti non funzionerà.

Ora avrai la tua cartella magica per accedere a una versione precedente dei contenuti del tuo disco rigido:

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

Per rimuoverlo dopo aver terminato, utilizzare rmdir.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.