You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell按用户组获取Azure过去30天的用户登录记录?

Azure AD按用户组筛选30天成功登录记录方案

一、Azure门户直接筛选限制

当前Azure AD登录审计面板不支持直接按安全/用户组筛选,仅能通过单个用户名、IP地址、应用等维度进行查询,批量按组筛选需通过脚本或Microsoft Graph API实现。

二、PowerShell实现步骤(基于Microsoft Graph模块)

1. 准备工作

确保已安装Microsoft Graph PowerShell模块,若未安装,执行:

Install-Module Microsoft.Graph -Force -AllowClobber

2. 连接Microsoft Graph

需要AuditLog.Read.All、User.Read.All、GroupMember.Read.All权限:

Connect-MgGraph -Scopes "AuditLog.Read.All", "User.Read.All", "GroupMember.Read.All"

3. 获取目标组内的所有用户

替换$groupName为你的目标组名称或直接用组ID:

# 替换为目标组名称
$groupName = "你的安全组名称"
$group = Get-MgGroup -Filter "displayName eq '$groupName'"
# 获取组内所有用户(排除组嵌套)
$groupUsers = Get-MgGroupMember -GroupId $group.Id -All $true | Where-Object {$_.AdditionalProperties.'@odata.type' -eq '#microsoft.graph.user'}
$userIds = $groupUsers.Id

4. 查询组内用户30天成功登录记录

筛选条件:过去30天、登录状态为成功(错误码0):

$startDate = (Get-Date).AddDays(-30).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
# 获取符合条件的登录记录
$groupSignIns = Get-MgAuditLogSignIn -Filter "createdDateTime ge $startDate and status/errorCode eq 0" -All $true | Where-Object {$userIds -contains $_.UserId}

5. 输出或导出结果

查看关键信息:

$groupSignIns | Select-Object UserDisplayName, UserPrincipalName, CreatedDateTime, IpAddress, AppDisplayName, Status

导出到CSV文件:

$groupSignIns | Select-Object UserDisplayName, UserPrincipalName, CreatedDateTime, IpAddress, AppDisplayName, Status | Export-Csv -Path "Group_SignIns_30Days.csv" -NoTypeInformation

注意事项

  • 若目标组包含大量用户,查询登录记录可能耗时较长,-All $true参数会自动处理分页
  • 确保执行脚本的账号拥有对应的Azure AD权限(全局管理员、安全管理员或审计管理员角色)

内容的提问来源于stack exchange,提问作者Forever_Curious

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 23:57:55