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

10995
Vladimir Reshetnikov

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 Beispiel unten), befindet sich die Registerkarte Vorherige Versionen, in der eine Liste der verfügbaren früheren Versionen des Ordners angezeigt wird. zusammen mit entsprechenden Zeitstempeln:

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:

Position auf der Registerkarte "Allgemein"


In der Adressleiste wird ein Ort angezeigt, an dem ein Zeitstempel (in einer langen, vom Menschen lesbaren Form) an jeden Ordnernamen angehängt wird. Wenn diese Position von dort kopiert wird, kann sie nicht direkt als gültiger Pfad in einem anderen Explorer-Fenster oder als Befehlszeilenprogramm verwendet werden. Wenn ich jedoch das Eigenschaftenfenster eines Subfloders öffne, wird in einem Formular eine Position des Unterordners 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 würde sich der Ordner mit einem magischen Namen @GMT-2013.08.27-04.01.18(der vermutlich einen Zeitstempel in der GMT-Zeitzone darstellt) so verhalten, als ob er dort tatsächlich beendet wurde. Sie können jedoch nicht dessen Existenz mit dem dirBefehl feststellen, wenn Sie dessen Namen nicht bereits kennen. Alle Dateien und Ordner unter diesem Ordner sind schreibgeschützt. Dort können keine Dateien erstellt, gelöscht, umbenannt oder geändert werden (einschließlich Datei- / Ordnerattribute 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 erstellen zuerst einen übergeordneten Ordner an einen nicht lesbaren Speicherort.

Frage: Ist es möglich, die Liste der Versionen eines bestimmten Ordners (z. B. des ersten Screenshots) abzurufen und eine davon in einem neuen Explorer-Fenster programmgesteuert zu öffnen (mithilfe von 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?

17

1 Antwort auf die Frage

12
harrymc

Mit dem volrestDienstprogramm, das in den Windows Server 2003 Resource Kit-Tools verfügbar ist, können Sie die vorherigen Versionen eines Ordners auflisten. Es hat für mich unter Windows 7 funktioniert und sollte immer noch unter Windows 8 funktionieren. Seien Sie nur vorsichtig mit Ihren Parametern, da es auch vorherige 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, die möglicherweise zusammen mit dem /BParameter für das bloße Format verwendet wird, 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 .