У нас есть система, используемая некоторыми отделами компании, и мы столкнулись с проблемами из-за некоторых неправильных конфигураций в этой системе, поэтому я включил аудит файлов, которые записываются или удаляются.
Теперь, когда у меня есть эта информация, как я могу ее использовать? Есть какой-нибудь инструмент? Все, что мне нужно сделать с этой информацией, - это перечислить пользователей, которые изменили данный файл, и даты изменения.
Как мне это сделать?
Я нашел решение своего вопроса (по крайней мере, очень простым способом):
$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