Bagaimana cara menemukan dan membuka versi folder sebelumnya secara terprogram (menggunakan PowerShell, WMI, dll)?

18

Saya menjalankan Windows 8 Enterprise x64. Ketika saya membuka \\localhost\c$sebagai folder jaringan, dan kemudian menggunakan menu konteks, buka jendela Properties dari subfolder (misalnya \\localhost\c$\Deployseperti dalam contoh di bawah ini), ada tab Versi Sebelumnya di mana saya dapat melihat daftar versi folder yang tersedia sebelumnya, bersama dengan cap waktu yang sesuai:

Tab Versi Sebelumnya


Jika saya memilih versi dan mengklik tombol Buka , jendela Explorer baru dibuka di mana saya dapat menelusuri versi folder yang dipilih sebelumnya:

Lokasi di Tab Umum


Bilah alamat menampilkan lokasi tempat cap waktu (dalam bentuk yang dapat dibaca manusia) ditambahkan ke setiap nama folder. Lokasi ini, jika disalin dari sana, tidak dapat langsung digunakan sebagai jalur yang valid di jendela Explorer lain atau alat baris perintah. Tetapi jika saya membuka jendela Properties dari subfloder, maka ini akan menampilkan lokasi subfolder dalam bentuk seperti \\localhost\c$\@GMT-2013.08.27-04.01.18\Deploy. Formulir ini sebenarnya dapat digunakan di Explorer dan baris perintah:

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

Dan di PowerShell juga:

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

Sepertinya folder dengan nama ajaib @GMT-2013.08.27-04.01.18(mungkin mewakili cap waktu di zona waktu GMT) berperilaku seolah-olah benar-benar keluar di sana, kecuali bahwa Anda tidak dapat menemukan keberadaannya menggunakan dirperintah kecuali Anda sudah tahu namanya. Semua file dan folder di bawah folder ini hanya untuk dibaca: tidak ada yang dapat dibuat, dihapus, diganti namanya atau diubah di sana (termasuk atribut file / folder dan izin). Jika Anda seorang administrator, tetapi tidak memiliki izin untuk melihat file tertentu, Anda tidak dapat mengubahnya, kecuali Anda terlebih dahulu berhasil menyalin folder yang berisi ke lokasi yang tidak dibaca.

Pertanyaan: Apakah mungkin untuk mendapatkan daftar versi folder tertentu, seperti yang ditunjukkan pada screenshot pertama, dan membuka salah satunya di jendela Explorer baru secara terprogram (menggunakan PowerShell, WMI, WSH, BAT, Win32 API, dll. )? Apakah mungkin untuk mendapatkan daftar folder yang sesuai dengan nama-nama ajaib seperti secara @GMT-2013.08.27-04.01.18 terprogram?

Vladimir Reshetnikov
sumber

Jawaban:

12

The volrestutilitas, tersedia dari Windows Server 2003 Resource Kit alat , bisa digunakan untuk daftar versi sebelumnya dari sebuah folder. Ini bekerja untuk saya di Windows 7 dan masih harus bekerja di Windows 8. Berhati-hatilah dengan parameter Anda, karena itu juga dapat mengembalikan versi sebelumnya.

Contoh penggunaan (dari tautan yang dikutip di bawah ini):

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)

Dengan output dari program ini, mungkin digunakan dengan /Bparameter untuk format kosong, Anda harus dapat membuat skrip yang akan mengeksplorasi salah satu versi yang terdaftar.

Untuk info lebih lanjut, lihat: Server Windows Hacks: Memulihkan Salinan Bayangan Menggunakan Baris Perintah .

harrymc
sumber
1

Terlambat membalas, tetapi saya mencoba volrestdan sepertinya tidak berfungsi pada Windows 10. Seperti OP mengamati, @GMT-yadayadayadafolder ajaib tidak muncul sampai Anda membawa folder di Explorer dari tab Versi Sebelumnya di Properti.

Pendekatan yang berhasil bagi saya adalah menggunakan mklink. Sebagai administrator di komputer / server yang bersangkutan, buka Command Prompt dan ketik 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

Cari bidang Shadow Copy Volume , dan gunakan perintah berikut untuk memetakan yang Anda butuhkan ke folder baru (dalam hal ini, yang terakhir dalam daftar):

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

Pastikan Anda menambahkan garis miring terbalik seperti yang saya lakukan di atas, atau tidak akan berhasil.

Sekarang Anda akan memiliki folder ajaib Anda sendiri untuk mengakses versi sebelumnya dari konten hard drive Anda:

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

Untuk menghapusnya setelah Anda selesai, gunakan rmdir.

Aaron Mason
sumber