通过PowerShell脚本跟踪AD中的更改

时间:2017-03-19 07:50:27

标签: powershell active-directory

我在PowerShell中编写了一个脚本,该脚本遵循ADd中的更改,由cmdlet Get-ADObject编写:

$Date = Get-Date
$FixedDate.AddHours(13)
Get-ADObject -Filter "whenchanged -gt $Date.Date" -Properties  sAMAccountName, whenCreated, whenChanged |
    select |
    Format-Table -Property sAMAccountName,whenCreated,whenChanged  -AutoSize

上面的脚本只能跟踪AD中的更改,但我希望脚本也可以告诉我哪个用户进行了更改。

我们怎么做?

1 个答案:

答案 0 :(得分:1)

除非您为Active Directory对象的更改启用审核,否则无法完成您要执行的操作。您可以在GPO内部以及SACL内部执行此操作。启用后,您需要将其应用于AD。

就脚本而言:我们首先得到我们想要检查AD的任何对象的日期。我喜欢做Get-ADObject -Filter ‘whenChanged -gt $Date’ | Group-Object objectclass。这将告诉我从帐户,组,政策等改变了什么。

现在我们可以使用select statment缩小结果范围。如果是已删除的帐户,我们可以使用您提供的示例。

$Date = [datetime]”3/19/2017"
#Get-ADObject -Filter ‘whenChanged -gt $Date’ | Group-Object objectclass

Get-ADObject -Filter 'whenChanged -gt $Date' -Properties *| 
select Name, sAMAccountName, whenChanged, whenCreated | Format-Table -AutoSize

我们还可以添加开关-IncludeDeletedObjects =检索已删除的对象

Get-ADObject -Filter 'whenChanged -gt $Date' -Properties * -IncludeDeletedObjects | 
select Name, sAMAccountName, whenChanged, whenCreated | Format-Table -AutoSize

如果未启用审核功能,则无法获取执行此操作的人员。

如果正确启用审核,则应在事件查看器中显示并查找ID 4726。 我们可以使用以下PowerShell脚本:

Get-Eventlog -Log Security -After $Date -Newest 10| Where {$_.EventID -eq 4726}

事件ID可以有很多选项,但是如果我们不知道该用户或对象会发生什么。我们可以运行:

Get-Eventlog -Log Security -After $Date -Newest 10 -Message "*A user account*"

AD审核的一些有用的事件ID:

Event ID 4720 - A user account was created.
Event ID 4722 - A user account was enabled.
Event ID 4726 - A user account was deleted.
Event ID 4738 - A user account was changed.

Event ID 5141 – A directory service object was deleted.
Event ID 5136 – A directory service object was modified.
Event ID 5139 – A directory service object was moved.
Event ID 5141 – A directory service object was deleted.