Wie kann ich frühere Versionen eines Ordners programmgesteuert finden und öffnen (mithilfe von PowerShell, WMI usw.)?

18

Ich verwende Windows 8 Enterprise x64. Wenn ich \\localhost\c$als Netzwerkordner öffne und dann über ein Kontextmenü das Eigenschaftenfenster eines Unterordners öffne (z. B. \\localhost\c$\Deploywie im folgenden Beispiel), gibt es die Registerkarte Vorherige Versionen, auf der eine Liste der verfügbaren früheren Versionen des Ordners angezeigt wird. zusammen mit entsprechenden Zeitstempeln:

Registerkarte "Vorherige Versionen"


Wenn ich eine Version auswähle und auf die Schaltfläche Öffnen klicke, wird ein neues Explorer-Fenster geöffnet, in dem ich die ausgewählte vorherige Version des Ordners durchsuchen kann:

Speicherort auf der Registerkarte Allgemein


In der Adressleiste wird ein Ort angezeigt, an dem ein Zeitstempel (in einer für Menschen lesbaren Form) an jeden Ordnernamen angehängt ist. Wenn dieser Speicherort von dort kopiert wird, kann er nicht direkt als gültiger Pfad in einem anderen Explorer-Fenster oder einem Befehlszeilenprogramm verwendet werden. Wenn ich jedoch das Eigenschaftenfenster eines Unterordners öffne, wird der Speicherort des Unterordners in einer Form wie der folgenden angezeigt \\localhost\c$\@GMT-2013.08.27-04.01.18\Deploy. Dieses Formular kann sowohl im Explorer als auch in der Befehlszeile verwendet werden:

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

Und auch 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

Es sieht so aus, als ob der Ordner mit einem magischen Namen @GMT-2013.08.27-04.01.18(der vermutlich einen Zeitstempel in der GMT-Zeitzone darstellt) sich so verhält, als würde er dort tatsächlich beendet, außer Sie können seine Existenz nicht mithilfe des dirBefehls feststellen, es sei denn, Sie kennen bereits seinen Namen. Alle Dateien und Ordner unter diesem Ordner sind schreibgeschützt: Dort kann nichts erstellt, gelöscht, umbenannt oder geändert werden (einschließlich Datei- / Ordnerattributen und Berechtigungen). Wenn Sie ein Administrator sind, aber keine Berechtigung zum Anzeigen bestimmter Dateien haben, können Sie dies nicht ändern, es sei denn, Sie können zuerst einen enthaltenen Ordner an einen nicht schreibgeschützten Speicherort kopieren.

Frage: Ist es möglich, die Liste der Versionen eines bestimmten Ordners, wie der auf dem ersten Screenshot gezeigten, abzurufen und in einem neuen Explorer - Fenster programmgesteuert zu öffnen (mit PowerShell, WMI, WSH, BAT, Win32 API usw.) )? Ist es möglich, die Liste der entsprechenden Ordner mit magischen Namen wie @GMT-2013.08.27-04.01.18 programmgesteuert abzurufen?

Vladimir Reshetnikov
quelle

Antworten:

12

Mit dem in volrestden Windows Server 2003 Resource Kit-Tools verfügbaren Dienstprogramm können die vorherigen Versionen eines Ordners aufgelistet werden. Es hat unter Windows 7 funktioniert und sollte auch unter Windows 8 funktionieren. Seien Sie nur vorsichtig mit Ihren Parametern, da es auch frühere Versionen wiederherstellen kann.

Ein Anwendungsbeispiel (aus dem unten angegebenen Link):

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)

Mit der Ausgabe dieses Programms, möglicherweise zusammen mit dem /BParameter für das Bare-Format, sollten Sie in der Lage sein, ein Skript zu erstellen, das eine der aufgelisteten Versionen untersucht.

Weitere Informationen finden Sie unter: Windows Server-Hacks: Wiederherstellen von Schattenkopien mithilfe der Befehlszeile .

Harrymc
quelle
1

Späte Antwort, aber ich habe es versucht volrestund es scheint unter Windows 10 nicht zu funktionieren. Wie das OP festgestellt hat, wird der @GMT-yadayadayadamagische Ordner erst angezeigt, wenn Sie den Ordner im Explorer auf der Registerkarte Vorherige Versionen in den Eigenschaften aufrufen.

Ein Ansatz, der für mich funktioniert hat, ist zu verwenden mklink. Öffnen Sie als Administrator auf dem betreffenden Computer / Server eine Eingabeaufforderung und geben Sie Folgendes ein 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

Suchen Sie nach dem Feld Schattenkopiedatenträger und ordnen Sie den gewünschten Ordner mit dem folgenden Befehl einem neuen Ordner zu (in diesem Fall dem letzten in der Liste):

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

Stellen Sie sicher, dass Sie den abschließenden Backslash wie oben angegeben hinzufügen, da dies sonst nicht funktioniert.

Sie haben jetzt Ihren eigenen Magic-Ordner, in dem Sie auf eine frühere Version des Festplatteninhalts zugreifen können:

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

Um es zu entfernen, nachdem Sie fertig sind, verwenden Sie rmdir.

Aaron Mason
quelle