Назад | Перейти на главную страницу

Создание журнала изменений файла Windows Server 2012

Мне интересно, знает ли кто-нибудь, как я могу настроить автоматическое создание журнала изменений файла в каталоге на сервере Windows 2012. У нас есть коллекция файлов word, excell и pdf, которые мне сейчас нужно создать вручную на еженедельной основе. Интересно, можно ли заставить Windows обрабатывать этот процесс. Любая помощь или руководство будут очень благодарны.

Используйте WMI. Вот версия vbscript, объясняющая, как использовать __InstanceOperationEvent из CIM_DirectoryContainsFile

http://www.codeproject.com/Articles/42212/WMI-and-File-System-Monitoring

Это может быть медленным в 2008 году, но, похоже, запускает файл в 2012 году.

Другой вариант - использовать диспетчер файлов:

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

Я рекомендую решение Джима Б с WMI, но если вам нужно что-то попроще с PowerShell:

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

Это создает файл с именем changed.txt с каждым файлом, измененным в c:\folder (и это подкаталоги), поскольку 04/18/14.

(кредиты: я получил это от пользователя nixda Вот)

Вы можете добавить этот сценарий в свой планировщик задач, чтобы он запускался каждый день.

Я не знаю способа узнать, какой пользователь изменил файл. Это можно сделать из файлов Word и Excel в VBA.