Como localizar e abrir versões anteriores de uma pasta programaticamente (usando o PowerShell, WMI, etc)?

17

Estou executando o Windows 8 Enterprise x64. Quando eu abro \localhost\c$ como uma pasta de rede e, em seguida, usando um menu de contexto, abra a janela Propriedades de uma subpasta (por exemplo, \localhost\c$\Deploy como no exemplo abaixo), existe o Anterior Na guia Versões , é possível ver uma lista de versões anteriores disponíveis da pasta, juntamente com os timestamps correspondentes:

SeeuselecionarumaversãoeclicarnobotãoOpen,umanovajaneladoExploreréaberta,ondepossonavegarnaversãoanteriorselecionadadapasta:

A barra de endereços exibe um local onde um registro de data e hora (em um formato longo legível) é anexado a cada nome de pasta. Esse local, se copiado de lá, não pode ser usado diretamente como um caminho válido em outra janela do Explorer ou em uma ferramenta de linha de comando. Mas se eu abrir a janela Propriedades de um subflodificador, ele exibirá um local da subpasta em um formulário como \localhost\c$\@GMT-2013.08.27-04.01.18\Deploy . Este formulário pode ser usado tanto no Explorer quanto na linha de comando:

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

E no PowerShell também:

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

Parece que a pasta com um nome mágico @GMT-2013.08.27-04.01.18 (presumivelmente representando um registro de data e hora no fuso horário GMT) se comporta como se estivesse realmente lá, exceto que você não pode descobrir sua existência usando o comando dir , a menos que você já sabe seu nome. Todos os arquivos e pastas abaixo desta pasta são somente leitura: nada pode ser criado, excluído, renomeado ou alterado (incluindo atributos e permissões de arquivos / pastas). Se você for um administrador, mas não tiver permissões para visualizar determinados arquivos, não será possível alterá-lo, a menos que você primeiro copie uma pasta contida em um local não-somente leitura.

Question: Is it possible to get the list of versions of a certain folder, like the one shown on the first screenshot, and open one of them in a new Explorer window programmatically (using PowerShell, WMI, WSH, BAT, Win32 API, etc)? Is it possible to get the list of corresponding folders with magic names like @GMT-2013.08.27-04.01.18 programmatically?

    
por Vladimir Reshetnikov 10.09.2013 / 23:04

1 resposta

12

O utilitário volrest , disponível no Ferramentas do Windows Server 2003 Resource Kit , pode ser usado para listar as versões anteriores de uma pasta. Funcionou para mim no Windows 7 e ainda deve funcionar no Windows 8. Apenas tome cuidado com seus parâmetros, pois ele também pode restaurar versões anteriores.

Um exemplo de uso (do link abaixo citado):

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)

Com a saída deste programa, talvez usada com o parâmetro /B para o formato simples, você deve ser capaz de construir um script que explore uma das versões listadas.

Para mais informações, consulte: Windows Server Hacks: restaurando cópias de sombra usando a linha de comando .

    
por 13.09.2013 / 10:28