Comment rechercher et ouvrir des versions précédentes d'un dossier par programme (à l'aide de PowerShell, WMI, etc.)?

18

J'utilise Windows 8 Enterprise x64. Lorsque j'ouvre en \\localhost\c$tant que dossier réseau, puis en utilisant un menu contextuel, ouvrez la fenêtre Propriétés d'un sous-dossier (par exemple, \\localhost\c$\Deploycomme dans l'exemple ci-dessous), il y a l' onglet Versions précédentes où je peux voir une liste des versions précédentes disponibles du dossier, avec les horodatages correspondants:

Onglet Versions précédentes


Si je sélectionne une version et clique sur le bouton Ouvrir , une nouvelle fenêtre de l'Explorateur s'ouvre où je peux parcourir la version précédente sélectionnée du dossier:

Emplacement dans l'onglet Général


La barre d'adresse affiche un emplacement où un horodatage (sous une forme longue lisible par l'homme) est ajouté à chaque nom de dossier. Cet emplacement, s'il est copié à partir de là, ne peut pas être directement utilisé comme chemin d'accès valide dans une autre fenêtre de l'Explorateur ou un outil de ligne de commande. Mais si j'ouvre la fenêtre Propriétés d'un sous-floder, alors il affiche un emplacement du sous-dossier sous une forme comme \\localhost\c$\@GMT-2013.08.27-04.01.18\Deploy. Ce formulaire peut en fait être utilisé à la fois dans l'explorateur et la ligne de commande:

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

Et dans PowerShell aussi:

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

Il semble que le dossier avec un nom magique @GMT-2013.08.27-04.01.18(représentant vraisemblablement un horodatage dans le fuseau horaire GMT) se comporte comme s'il y était réellement sorti, sauf que vous ne pouvez pas découvrir son existence à l'aide de la dircommande à moins que vous ne connaissiez déjà son nom. Tous les fichiers et dossiers situés sous ce dossier sont en lecture seule: rien ne peut y être créé, supprimé, renommé ou modifié (y compris les attributs et autorisations de fichier / dossier). Si vous êtes un administrateur, mais ne disposez pas des autorisations pour afficher certains fichiers, vous ne pouvez pas modifier cela, sauf si vous parvenez d'abord à copier un dossier contenant vers un emplacement non en lecture seule.

Question: Est-il possible d'obtenir la liste des versions d'un certain dossier, comme celui montré sur la première capture d'écran, et d'ouvrir l'une d'elles dans une nouvelle fenêtre de l'Explorateur par programmation (en utilisant PowerShell, WMI, WSH, BAT, Win32 API, etc. )? Est-il possible d'obtenir la liste des dossiers correspondants avec des noms magiques comme par @GMT-2013.08.27-04.01.18 programme?

Vladimir Reshetnikov
la source

Réponses:

12

L' volrestutilitaire, disponible à partir des outils du Kit de ressources Windows Server 2003 , peut être utilisé pour répertorier les versions précédentes d'un dossier. Cela a fonctionné pour moi sur Windows 7 et devrait toujours fonctionner sur Windows 8. Faites juste attention à vos paramètres, car il peut également restaurer les versions précédentes.

Un exemple d'utilisation (à partir du lien ci-dessous):

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)

Avec la sortie de ce programme, peut-être utilisée avec le /Bparamètre pour le format nu, vous devriez pouvoir construire un script qui explorera l'une des versions répertoriées.

Pour plus d'informations, voir: Windows Server Hacks: Restauration des clichés instantanés à l'aide de la ligne de commande .

harrymc
la source
1

Réponse tardive, mais j'ai essayé volrestet cela ne semble pas fonctionner sous Windows 10. Comme l'OP l'a observé, le @GMT-yadayadayadadossier magique n'apparaît que lorsque vous ouvrez le dossier dans l'Explorateur à partir de l'onglet Versions précédentes des Propriétés.

Une approche qui a fonctionné pour moi est d'utiliser mklink. En tant qu'administrateur sur l'ordinateur / serveur en question, ouvrez une invite de commande et tapez 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

Recherchez le champ Volume de cliché instantané et utilisez la commande suivante pour mapper celui dont vous avez besoin vers un nouveau dossier (dans ce cas, le dernier de la liste):

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

Assurez-vous d'ajouter la barre oblique inverse de fin comme je l'ai fait ci-dessus, sinon cela ne fonctionnera pas.

Vous aurez maintenant votre propre dossier magique pour accéder à une version précédente du contenu de votre disque dur:

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

Pour le supprimer une fois que vous avez terminé, utilisez rmdir.

Aaron Mason
la source