如何以编程方式(使用PowerShell,WMI等)查找和打开文件夹的先前版本?


18

我正在运行Windows 8 Enterprise x64。当我打开\\localhost\c$为网络文件夹时,然后使用上下文菜单打开子文件夹的“ 属性”窗口(例如\\localhost\c$\Deploy,如下例所示),在“ 以前的版本”选项卡中,我可以看到该文件夹​​的可用先前版本列表,以及相应的时间戳:

以前的版本选项卡


如果我选择一个版本并单击“ 打开”按钮,则会打开一个新的“资源管理器”窗口,在该窗口中,我可以浏览所选文件夹的先前版本:

常规选项卡上的位置


地址栏显示一个位置,在该位置将时间戳记(以很长的人类可读格式)附加到每个文件夹名称。如果从该位置复制此位置,则不能在另一个“资源管理器”窗口或命令行工具中将其直接用作有效路径。但是,如果我打开子文件夹的“ 属性”窗口,则它将以的形式显示子文件夹的位置\\localhost\c$\@GMT-2013.08.27-04.01.18\Deploy。该表格实际上可以在资源管理器和命令行中使用:

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

在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

看起来带有魔术名称的文件夹@GMT-2013.08.27-04.01.18(大概表示GMT时区中的时间戳)的行为就像实际上退出了该文件夹一样,除了dir除非您已经知道其名称,否则您无法使用命令来发现它的存在。此文件夹下的所有文件和文件夹均为只读:在那里无法创建,删除,重命名或更改任何内容(包括文件/文件夹属性和权限)。如果您是管理员,但没有查看某些文件的权限,则不能更改该设置,除非您首先设法将包含文件夹复制到非只读位置。

问题:是否可以获取某个文件夹的版本列表,如第一个屏幕截图所示,并以编程方式(使用PowerShell,WMI,WSH,BAT,Win32 API等)在新的资源管理器窗口中打开其中一个文件夹)?是否有可能像@GMT-2013.08.27-04.01.18 编程一样获得带有魔术名称的相应文件夹的列表?

Answers:


12

Windows Server 2003资源工具包工具volrest提供的实用程序 可用于列出文件夹的早期版本。它在Windows 7上对我有效,在Windows 8上仍然应能工作。请注意您的参数,因为它也可以还原以前的版本。

使用示例(来自下面引用的链接):

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)

通过该程序的输出(可能与/B裸格式的参数一起使用),您应该能够构建一个脚本,以浏览列出的版本之一。

有关更多信息,请参见: Windows Server黑客:使用命令行还原卷影副本


1

回复较晚,但我尝试过volrest,但似乎无法在Windows 10上使用。正如观察到的OP所示,@GMT-yadayadayada除非您从“属性”中的“先前版本”选项卡中在资源管理器中打开了该文件夹,否则不会出现magic文件夹。

对我有用的一种方法是使用mklink。以相关计算机/服务器上的管理员身份,打开命令提示符并键入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

查找“ 卷影副本量”字段,然后使用以下命令将所需的一个映射到新文件夹(在这种情况下,列表中的最后一个):

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

确保像我在上面那样添加结尾的反斜杠,否则它将不起作用。

现在,您将拥有自己的magic文件夹,用于访问硬盘驱动器内容的先前版本:

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

要在完成后删除它,请使用rmdir

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.