Windows

如何使用文件系統審計資訊

  • May 1, 2018

我們有一個公司的某些部門使用的系統,由於該系統上的一些配置錯誤,我們遇到了問題,因此我啟用了正在寫入或刪除的審計文件。

既然我有了這些資訊,我該如何使用它?有什麼工具嗎?我需要對這些資訊做的就是列出修改給定文件的使用者和修改日期。

我該怎麼做?

我找到了我的問題的解決方案(至少以非常基本的方式):

$server = "localhost"
$out = New-Object System.Text.StringBuilder 
$out.AppendLine("ServerName,EventID,TimeCreated,UserName,File_or_Folder,AccessMask")
$ns = @{e = "http://schemas.microsoft.com/win/2004/08/events/event"} 
$evts = Get-WinEvent -computer $server -FilterHashtable @{logname="security";id="4663"} -oldest

foreach($evt in $evts) 
{ 
   [xml]$xml = $evt.ToXml()

   $SubjectUserName = Select-Xml -Xml $xml -Namespace $ns -XPath "//e:Data[@Name='SubjectUserName']/text()" | Select-Object -ExpandProperty Node | Select-Object -ExpandProperty Value

   $ObjectName = Select-Xml -Xml $xml -Namespace $ns -XPath "//e:Data[@Name='ObjectName']/text()" | Select-Object -ExpandProperty Node | Select-Object -ExpandProperty Value

   $AccessMask = Select-Xml -Xml $xml -Namespace $ns -XPath "//e:Data[@Name='AccessMask']/text()" | Select-Object -ExpandProperty Node | Select-Object -ExpandProperty Value

   $out.AppendLine("$($server),$($evt.id),$($evt.TimeCreated),$SubjectUserName,$ObjectName,$AccessMask")

   Write-Host $server 
   Write-Host $evt.id,$evt.TimeCreated,$SubjectUserName,$ObjectName,$AccessMask
} 

$out.ToString() | out-file -filepath C:\Temp\4663Events.csv

引用自:https://serverfault.com/questions/908971