获取用户加入Azure AD组时间的Microsoft Graph PowerShell脚本需求
获取Azure AD用户添加至组的审计日志脚本
核心筛选逻辑
要定位用户被添加到组的操作,需针对Add member to group这个操作名称筛选审计日志,同时提取操作日期、目标用户、目标组及操作发起者这些关键信息。
完整脚本
# 确保已连接Microsoft Graph(你已完成此步骤,若未连接可运行:Connect-MgGraph -Scopes "AuditLog.Read.All","Directory.Read.All") # 获取所有用户添加至组的审计日志 $groupAddLogs = Get-MgAuditLogDirectoryAudit -Filter "OperationName eq 'Add member to group'" -All ` -Property ActivityDateTime, OperationName, TargetResources, InitiatedBy # 处理日志,提取结构化信息 $results = foreach ($log in $groupAddLogs) { # 从TargetResources数组中区分用户和组对象 $targetUser = $log.TargetResources | Where-Object { $_.Type -eq "User" } $targetGroup = $log.TargetResources | Where-Object { $_.Type -eq "Group" } [PSCustomObject]@{ 添加日期 = $log.ActivityDateTime 用户名 = $targetUser.DisplayName 用户UPN = $targetUser.UserPrincipalName 组名 = $targetGroup.DisplayName 组ID = $targetGroup.Id 发起者 = $log.InitiatedBy.User.UserPrincipalName } } # 输出表格结果,也可导出为CSV文件 $results | Format-Table -AutoSize # $results | Export-Csv -Path "GroupMemberAddLogs.csv" -NoTypeInformation -Encoding UTF8
关键参数说明
-Filter "OperationName eq 'Add member to group'":精准匹配用户添加到组的操作类型,是获取目标日志的核心条件。-All:自动遍历所有分页结果,避免只获取默认的前100条日志。-Property:指定仅返回需要的属性,减少数据传输量,提升查询效率。
自定义筛选(可选)
如果需要针对特定用户或组缩小范围,可扩展Filter条件:
# 筛选特定用户被添加到任意组的日志 Get-MgAuditLogDirectoryAudit -Filter "OperationName eq 'Add member to group' and TargetResources/any(tr: tr/Type eq 'User' and tr/UserPrincipalName eq 'user@domain.com')" -All # 筛选添加到特定组的所有用户日志 Get-MgAuditLogDirectoryAudit -Filter "OperationName eq 'Add member to group' and TargetResources/any(tr: tr/Type eq 'Group' and tr/Id eq 'group-guid-here')" -All
注意事项
- Azure AD审计日志默认保留90天,无法获取超过90天的历史记录。
- 确保应用注册已授予
AuditLog.Read.All和Directory.Read.All的应用权限并完成管理员同意(你已完成配置,若出现权限错误可复查此环节)。
内容的提问来源于stack exchange,提问作者Chuck James
相关产品推荐
相关产品推荐

