Geração de Changelog de Arquivo Windows Server 2012

1

Eu estou querendo saber se alguém poderia saber uma maneira que eu poderia configurar a geração automática de um changelog de arquivo em um diretório no Windows Server 2012. Temos uma coleção de arquivos Word, Excel e PDF que estou tendo atualmente para criar um changelog manualmente em uma base semanal. Eu me pergunto se é possível ter o Windows lidando com esse processo. Qualquer ajuda ou orientação seria muito apreciada.

    
por user3538260 19.01.2015 / 23:29

2 respostas

1

Use o WMI. Aqui está uma versão vbscript explicando como usar __InstanceOperationEvent de CIM_DirectoryContainsFile

link

Isso pode ser lento em 2008, mas parece executar o arquivo em 2012

Outra opção é usar o filewatcher:

Write-Verbose ("Initializing FileSystemWatcher") -Verbose
$fileWatcher = New-Object System.IO.FileSystemWatcher
$fileWatcher.Path = "C:\folder"
Register-ObjectEvent -InputObject $fileWatcher -EventName Created -SourceIdentifier File.Created -Action {
        $Global:t = $event
        Write-Host ("File/Folder Created: {0} on {1}" -f '
        $event.SourceEventArgs.Name,
        (Split-Path $event.SourceEventArgs.FullPath)) -BackgroundColor Black -ForegroundColor Red 
        } | Out-Null
Register-ObjectEvent -InputObject $fileWatcher -EventName Deleted -SourceIdentifier File.Deleted -Action {
        $Global:t = $event
        Write-Host ("File/Folder Deleted: {0} on {1}" -f '
        $event.SourceEventArgs.Name,
        (Split-Path $event.SourceEventArgs.FullPath)) -BackgroundColor Black -ForegroundColor Red
    } | Out-Null
    Register-ObjectEvent -InputObject $fileWatcher -EventName Changed -SourceIdentifier File.Changed -Action {
        $Global:t = $event
        Write-Host ("File/Folder Changed: {0} on {1}" -f '
        $event.SourceEventArgs.Name,
        (Split-Path $event.SourceEventArgs.FullPath)) -BackgroundColor Black -ForegroundColor Red
    } | Out-Null
    
por 20.01.2015 / 01:32
0

Eu recomendo a solução de Jim B com o WMI, mas se você quiser algo mais simples com o powershell:

Dir C:\folder -r | ? {! $_.PSIsContainer -AND $_.lastwritetime -ge '04/18/14'} > changed.txt

Isso cria um arquivo chamado changed.txt com todos os arquivos alterados em c:\folder (e seus subdiretórios) desde 04/18/14 .

(créditos: eu recebi isso do usuário nixda aqui )

Você pode adicionar este script ao seu Agendador de Tarefas para ser executado todos os dias.

Não conheço nenhuma maneira de obter as informações de qual usuário alterou o arquivo. Isso pode ser feito a partir de arquivos do Word e do Excel no VBA.

    
por 20.01.2015 / 11:53