Как программно найти и открыть предыдущие версии папки (используя PowerShell, WMI и т. Д.)?

10913
Vladimir Reshetnikov

Я использую 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 программно?

17

1 ответ на вопрос

12
harrymc

The volrest utility, available from the Windows Server 2003 Resource Kit Tools, can be used to list the previous versions of a folder. It worked for me on Windows 7 and should still work on Windows 8. Just be careful with your parameters, since it can also restore previous versions.

An example of use (from the below-quoted 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) 

With the output of this program, maybe used with the /B parameter for bare format, you should be able to construct a script that will explore one of the listed versions.

For more info see : Windows Server Hacks: Restoring Shadow Copies Using the Command Line.