我是 Powershell 的新手。我正在尝试获取有关帐户管理审计的几个事件 IDS 的信息。我知道我写的脚本效率不够,但我认为这不是问题所在。出于某种原因,即使我生成了一些事件并且它们显示在 EventViewer 中,我也没有得到事件 ID 4781 的输出。对于 4720,4726,4722 等事件 ID,我可以使用相同的脚本将它们正常记录在输出文件中。有人知道为什么吗?
目前我得到输出:操作:用户创建时间:31-08-2018 2:55 谁:管理员用户:test2
$events = Get-Eventlog -LogName Security -ComputerName $DC.Hostname -after $startDate | where {$e.EventID -eq 4781 -or $e.EventID -eq 4720}
$ActivityOutput=foreach ($e in $events) {
if (($e.EventID -eq 4720)){
Write-Output "Action:User Created","Time:$($e.TimeGenerated.ToString("dd-MM-yyyy h:mm"))","Who:$($e.ReplacementStrings[4])","User:$($e.ReplacementStrings[0])"
Write-Output "===============================================`n"
}
if (($e.EventID -eq 4781)){
Write-Output "The name of an Object changed", "Time:$($e.TimeGenerated.ToString("dd-MM-yyyy h:mm"))", "Who:$($e.ReplacementStrings[5])","Old Value:$($e.ReplacementStrings[0])","New Value:$($e.ReplacementStrings[1])"
Write-Output "===============================================`n"
}
} Out-File -Append -FilePath C:\UserTracking.txt -InputObject $ActivityOutput
========= UPDATE 04/09/2018 因此,Get-EventLog 似乎只获取了一些 EventID,这就是为什么我错过了其中一些,例如 4781。我转换为 Get-WinEvent,似乎这个获取所有需要的 EventID。编辑代码:
$events=Get-WinEvent -FilterHashtable @{Logname="Security"; StartTime=(get-date).AddDays(-6); ID=4781,4738,4725,4728,4729,4720,4726,4722,4740}
}
$ActivityOutput=foreach ($e in $events) {
# user account was created
if (($e.Id -eq 4720)){
Write-Output "Action:User Created","Time:$($e.TimeCreated.ToString("dd-MM-yyyy h:mm"))",***"Who:$($e.?)","User:$($e.?)"***
}
现在,关于如何使用上面看起来的 Write-Output 获取信息,例如谁进行了更改以及哪个用户的任何帮助?