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

获取Azure AD用户完整信息及所有用户最后登录时间的方法问询

获取Azure AD用户完整信息与最后登录记录

一、获取所有Azure AD用户的完整信息

默认Get-AzADUser仅返回基础字段,要拉取用户全量属性,需添加-All $true和-Select *参数,可获取邮箱、部门、创建时间、账户状态等所有可用信息。

示例命令:

# 查看所有用户完整属性(按需筛选字段)
Get-AzADUser -All $true -Select * | Select-Object DisplayName, UserPrincipalName, Mail, Department, CreatedDateTime, AccountEnabled, Id

若需导出到本地文件:

# 导出到CSV方便后续分析
Get-AzADUser -All $true -Select * | Select-Object DisplayName, UserPrincipalName, Mail, Department, CreatedDateTime, AccountEnabled, Id | Export-Csv -Path "AzureADUsersFullInfo.csv" -NoTypeInformation

你可以根据需求调整Select-Object后的字段列表,只保留需要的信息。

二、获取用户最后登录记录(突破60天限制)

Azure AD登录日志默认仅保留60天,要获取更长周期的记录,可通过以下方式实现:

1. 配置日志长期存档

将Azure AD登录日志导出到Azure存储账户(可自定义保留周期,最长数年)或Log Analytics工作区,之后从这些存储位置查询历史数据:

  • 配置路径:Azure门户 → Azure Active Directory → 监控 → 日志 → 导出设置,添加目标存储账户/Log Analytics工作区并设置保留时长。
  • Log Analytics查询示例(Kusto语言):
    SigninLogs
    | where TimeGenerated > ago(365d)  // 可修改为需要的时间范围,比如180d
    | summarize LastSignIn = max(TimeGenerated) by UserPrincipalName, DisplayName
    | order by LastSignIn desc
    

2. 通过Microsoft Graph API查询

Graph API的signInLogs端点默认返回30天数据,但如果已配置日志存档,可通过$filter指定更早的时间范围(前提是对应周期的日志已存档)。示例PowerShell调用:

# 获取Graph API访问令牌
$token = (Get-AzAccessToken -ResourceUrl "https://graph.microsoft.com").Token

# 查询最近180天的登录记录
$signInLogs = Invoke-RestMethod -Uri "https://graph.microsoft.com/v1.0/auditLogs/signIns?`$filter=createdDateTime ge '$(Get-Date (Get-Date).AddDays(-180) -Format "yyyy-MM-dd")T00:00:00Z'" -Headers @{Authorization = "Bearer $token"} -Method Get

# 整理用户最后登录记录
$userSignInData = $signInLogs.value | Group-Object UserPrincipalName | ForEach-Object {
    [PSCustomObject]@{
        UserPrincipalName = $_.Name
        LastSignInTime    = ($_.Group.createdDateTime | Sort-Object -Descending)[0]
        DisplayName       = ($_.Group.displayName | Select-Object -First 1)
    }
}

# 导出结果到CSV
$userSignInData | Export-Csv -Path "AzureADUserLastSignIn.csv" -NoTypeInformation

3. 筛选从未登录的用户

结合全量用户列表和登录记录,可找出从未登录的用户:

$allUsers = Get-AzADUser -All $true -Select UserPrincipalName, DisplayName
$signedInUsers = $userSignInData.UserPrincipalName
$neverSignedInUsers = $allUsers | Where-Object { $_.UserPrincipalName -notin $signedInUsers }

$neverSignedInUsers | Export-Csv -Path "AzureADUsersNeverSignedIn.csv" -NoTypeInformation

内容的提问来源于stack exchange,提问作者Sérgio Peres

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:05:01