导出过滤排序AD用户
Export filter sort AD users
我目前正在寻找一种创建 powershell 脚本的解决方案,该脚本允许我获取 Aduser,但在创建级别上,例如:自上个月以来我创建了 50 个用户。我的同事创建了 20 个。我只想导出并显示我创建的用户,即使是在同一时期。
这可能吗?
我目前不知道从哪里开始或如何处理这个问题。任何类型的帮助将不胜感激。
would this be possible?
当然可以,如果您将域控制器安全事件日志存储那么久。
对象的创建者不记录在目录本身中,但会记录信息,假设 correctly configured audit policy 在 DC 上。
如果您有 SIEM 或至少有一些中央日志存储,这显然更容易报告。但如果没有,您可以直接向域控制器查询这些日志:
# Event id 5137 == a directory object was created
$EventId = 5137
# We only want events instigated by ourselves
$Subject = $env:USERNAME
# ... over the last month
$Since = (Get-Date).AddMonths(-1)
# Prepare XPath filter
$timestamp = Get-Date $Since -Format s
$XPathFilter = "*[System[TimeCreated[@SystemTime>'$timestamp']][EventID=$EventId]][EventData[Data[@Name = 'SubjectUserName'] = '$Subject']]"
# Search all the domain controllers
$ObjectCreationEvents = Get-ADDomainController -Filter * |ForEach-Object {
Get-WinEvent -FilterXPath $XPathFilter -LogName Security -ComputerName $_.HostName
}
生成的事件也将具有每个对象的唯一 objectGuid
值,使我们能够再次轻松定位它们:
$ObjectCreationEvents |ForEach-Object {
# Extract object ID
$guid = $_.ToXml().SelectSingleNode('//*[local-name() = "Data" and @Name =
"ObjectGUID"]').InnerText
# Query the actual object
Get-ADObject -Identity $guid
}
我目前正在寻找一种创建 powershell 脚本的解决方案,该脚本允许我获取 Aduser,但在创建级别上,例如:自上个月以来我创建了 50 个用户。我的同事创建了 20 个。我只想导出并显示我创建的用户,即使是在同一时期。 这可能吗? 我目前不知道从哪里开始或如何处理这个问题。任何类型的帮助将不胜感激。
would this be possible?
当然可以,如果您将域控制器安全事件日志存储那么久。
对象的创建者不记录在目录本身中,但会记录信息,假设 correctly configured audit policy 在 DC 上。
如果您有 SIEM 或至少有一些中央日志存储,这显然更容易报告。但如果没有,您可以直接向域控制器查询这些日志:
# Event id 5137 == a directory object was created
$EventId = 5137
# We only want events instigated by ourselves
$Subject = $env:USERNAME
# ... over the last month
$Since = (Get-Date).AddMonths(-1)
# Prepare XPath filter
$timestamp = Get-Date $Since -Format s
$XPathFilter = "*[System[TimeCreated[@SystemTime>'$timestamp']][EventID=$EventId]][EventData[Data[@Name = 'SubjectUserName'] = '$Subject']]"
# Search all the domain controllers
$ObjectCreationEvents = Get-ADDomainController -Filter * |ForEach-Object {
Get-WinEvent -FilterXPath $XPathFilter -LogName Security -ComputerName $_.HostName
}
生成的事件也将具有每个对象的唯一 objectGuid
值,使我们能够再次轻松定位它们:
$ObjectCreationEvents |ForEach-Object {
# Extract object ID
$guid = $_.ToXml().SelectSingleNode('//*[local-name() = "Data" and @Name =
"ObjectGUID"]').InnerText
# Query the actual object
Get-ADObject -Identity $guid
}