如何在Active Directory中查询未经审批的组成员添加操作人及时间
如何追踪未经审批添加AD/Exchange组成员的操作人及时间
要获取成员被添加到组的操作人及时间,前提是已启用对应系统的审计功能——默认情况下这类审计可能未开启,以下分场景说明操作方法:
一、针对Active Directory(AD)本地组/安全组/分发组
1. 先确认AD审计策略是否启用
首先检查域控制器的目录服务更改审计状态:
Get-ADDomainController -Filter * | Select-Object Name, Domain, EnabledDirectoryScopes
如果输出中没有DirectoryServiceChanges,需要通过组策略开启:
- 打开组策略管理编辑器,定位到计算机配置→Windows设置→安全设置→高级审计策略配置→审计策略→DS访问
- 启用「审计目录服务更改」,勾选「成功」和「失败」选项
2. 查询AD安全事件日志
启用审计后,域控制器的安全日志会记录以下相关事件ID:
- 4728:添加成员到全局组
- 4732:添加成员到本地组
- 4756:添加成员到通用组
用PowerShell筛选目标操作:
Get-WinEvent -FilterHashtable @{ LogName = 'Security' ID = 4728,4732,4756 } | Where-Object { $_.Properties[3].Value -eq "Groupname@company.com" -and $_.Properties[4].Value -eq "X@companyname.com" } | Select-Object TimeCreated, @{Name='操作人'; Expression={$_.Properties[1].Value}}, Message
- 字段说明:
TimeCreated是操作时间,Properties[1]对应执行操作的账户,Properties[3]是目标组,Properties[4]是被添加的成员
二、针对Exchange Server/Exchange Online通讯组/安全组
1. 确认Exchange管理员审计日志是否启用
先检查当前状态:
Get-AdminAuditLogConfig | Select-Object AdminAuditLogEnabled
如果未启用,执行以下命令开启(仅针对Exchange本地):
Set-AdminAuditLogConfig -AdminAuditLogEnabled $true -AdminAuditLogCmdlets *-DistributionGroupMember*
Exchange Online默认可能已启用统一审计,可直接跳至查询步骤。
2. 查询Exchange审计日志
Exchange本地
Search-AdminAuditLog -Cmdlets Add-DistributionGroupMember -Parameters Member, Identity | Where-Object { $_.Identity -eq "Groupname@company.com" -and $_.Member -eq "X@companyname.com" } | Select-Object RunDate, Caller, CmdletName, Parameters
- 字段说明:
RunDate是操作时间,Caller是执行操作的账户
Exchange Online
Search-UnifiedAuditLog -Operations "Add member to group" -StartDate (Get-Date).AddDays(-30) -EndDate (Get-Date) | Where-Object { $_.ObjectId -eq "Groupname@company.com" -and $_.UserIds -eq "X@companyname.com" } | Select-Object CreationDate, UserId, Operation
关键提示
- 如果审计功能是事后才开启的,开启前的操作记录无法回溯,只能查询开启后的日志
- 若组同时存在于AD和Exchange中,需分别检查两个系统的日志,确认操作来源
内容的提问来源于stack exchange,提问作者Abdalaziz Alharthi
相关产品推荐
相关产品推荐

