Jak programowo znaleźć i otworzyć poprzednie wersje folderu (przy użyciu programu PowerShell, WMI itp.)?

18

Korzystam z systemu Windows 8 Enterprise x64. Kiedy otwieram \\localhost\c$jako folder sieciowy, a następnie za pomocą menu kontekstowego otwieram okno Właściwości podfolderu (np. \\localhost\c$\DeployJak w poniższym przykładzie), znajduje się karta Poprzednie wersje , gdzie mogę zobaczyć listę dostępnych poprzednich wersji tego folderu, wraz z odpowiednimi znacznikami czasu:

Karta Poprzednie wersje


Jeśli wybiorę wersję i kliknę przycisk Otwórz , otworzy się nowe okno Eksploratora, w którym mogę przeglądać wybraną poprzednią wersję folderu:

Lokalizacja na karcie Ogólne


Pasek adresu wyświetla lokalizację, w której znacznik czasu (w długiej czytelnej dla człowieka formie) jest dołączany do nazwy każdego folderu. Ta lokalizacja, jeśli zostanie skopiowana stamtąd, nie może być bezpośrednio użyta jako poprawna ścieżka w innym oknie Eksploratora lub narzędziu wiersza poleceń. Ale jeśli otworzę okno Właściwości subflodera, wyświetli on lokalizację podfolderu w formie podobnej do tej \\localhost\c$\@GMT-2013.08.27-04.01.18\Deploy. Tego formularza można faktycznie użyć zarówno w Eksploratorze, jak i wierszu poleceń:

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

A także w 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

Wygląda na to, że folder o magicznej nazwie @GMT-2013.08.27-04.01.18(przypuszczalnie reprezentujący znacznik czasu w strefie czasowej GMT) zachowuje się tak, jakby faktycznie tam się znalazł, z wyjątkiem tego, że nie można wykryć jego istnienia za pomocą dirpolecenia, chyba że znasz jego nazwę. Wszystkie pliki i foldery poniżej tego folderu są tylko do odczytu: nic nie można tam tworzyć, usuwać, zmieniać ich nazw ani zmieniać (w tym atrybuty i uprawnienia do plików / folderów). Jeśli jesteś administratorem, ale nie masz uprawnień do przeglądania niektórych plików, nie możesz tego zmienić, chyba że najpierw uda Ci się skopiować folder zawierający do lokalizacji nie tylko do odczytu.

Pytanie: Czy można uzyskać listę wersji określonego folderu, na przykład pokazanego na pierwszym zrzucie ekranu, i otworzyć jedną z nich w nowym oknie Eksploratora programowo (za pomocą PowerShell, WMI, WSH, BAT, Win32 API itp. )? Czy możliwe jest uzyskanie listy odpowiednich folderów o magicznych nazwach, takich jak @GMT-2013.08.27-04.01.18 programowo?

Vladimir Reshetnikov
źródło

Odpowiedzi:

12

volrestNarzędzie, dostępne z narzędzi Resource Kit dla systemu Windows Server 2003 , można wykorzystać do listy poprzednie wersje folderu. To działało dla mnie w systemie Windows 7 i powinno nadal działać w systemie Windows 8. Po prostu zachowaj ostrożność przy swoich parametrach, ponieważ może również przywrócić poprzednie wersje.

Przykład zastosowania (z cytowanego poniżej linku):

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)

Dzięki wynikom tego programu, który może być używany z /Bparametrem formatu gołego, powinieneś być w stanie stworzyć skrypt, który będzie eksplorował jedną z wymienionych wersji.

Aby uzyskać więcej informacji, zobacz: Windows Server Hacks: Przywracanie kopii w tle za pomocą wiersza polecenia .

harrymc
źródło
1

Późna odpowiedź, ale próbowałem volresti wydaje się, że nie działa w systemie Windows 10. Jak zauważył PO, @GMT-yadayadayadamagiczny folder nie pojawia się, dopóki nie otworzysz go w Eksploratorze z karty Poprzednie wersje we Właściwościach.

Podejście, które mi się sprawdziło, to zastosować mklink. Jako administrator na danym komputerze / serwerze otwórz wiersz polecenia i wpisz 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

Poszukaj pola Objętość kopiowania w tle i użyj następującego polecenia, aby zamapować potrzebny folder na nowy folder (w tym przypadku ostatni na liście):

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

Upewnij się, że dodałeś końcowy ukośnik odwrotny, jak to zrobiłem powyżej, inaczej nie zadziała.

Będziesz teraz mieć swój własny magiczny folder do uzyskiwania dostępu do poprzedniej wersji zawartości dysku twardego:

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

Aby go usunąć po zakończeniu, użyj rmdir.

Aaron Mason
źródło