![文件变更日志生成 Windows Server 2012](https://linux22.com/image/650069/%E6%96%87%E4%BB%B6%E5%8F%98%E6%9B%B4%E6%97%A5%E5%BF%97%E7%94%9F%E6%88%90%20Windows%20Server%202012.png)
我想知道是否有人知道在 Windows Server 2012 的目录中设置文件更改日志自动生成的方法。我们有一系列 word、excell 和 pdf 文件,目前我必须每周手动创建更改日志。我想知道是否可以让 Windows 处理此过程。任何帮助或指导都将不胜感激。
答案1
使用 WMI。这是一个 vbscript 版本,解释了如何使用 CIM_DirectoryContainsFile 中的 __InstanceOperationEvent
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
答案2
我推荐 Jim B 使用 WMI 的解决方案,但如果您想要使用 powershell 的更简单的解决方案:
Dir C:\folder -r | ? {! $_.PSIsContainer -AND $_.lastwritetime -ge '04/18/14'} > changed.txt
这将创建一个名为的文件,其中包含自 以来在 (及其子目录中)changed.txt
更改的每个文件。c:\folder
04/18/14
(来源:我从用户 nixda 处获得这里)
您可以将此脚本添加到任务计划程序中以便每天运行。
我不知道有什么方法可以获取哪个用户更改了文件的信息。可以使用 VBA 在 Word 和 Excel 文件中完成此操作。