Microsoft Graph PowerShell:导出含经理信息及上次登录日期的Azure AD用户CSV列表
解决Azure AD用户导出CSV添加上次登录与经理邮箱的问题
修改后的完整脚本
# 连接Microsoft Graph,需确保有User.Read.All和AuditLog.Read.All权限 Connect-MgGraph -Scopes "User.Read.All", "AuditLog.Read.All" $logDate = Get-Date -Format "dd-MMM-yyyy" $csvFile = "c:\temp\AllAADUsers_$logDate.csv" # 获取用户并展开经理,指定SignInActivity属性以获取登录信息 Get-MgUser -All -ExpandProperty manager -Property DisplayName, UserPrincipalName, JobTitle, SignInActivity | Select-Object DisplayName, UserPrincipalName, JobTitle, @{Name = 'ManagerDisplayName'; Expression = { $_.Manager?.DisplayName } }, @{Name = 'ManagerEmail'; Expression = { $_.Manager?.UserPrincipalName } }, @{Name = 'LastSignInDate'; Expression = { if ($_.SignInActivity.LastSignInDateTime) { Get-Date $_.SignInActivity.LastSignInDateTime -Format "yyyy-MM-dd HH:mm:ss" } else { "从未登录" } }} | Export-Csv -Path $csvFile -NoTypeInformation -Encoding UTF8
关键修改说明
- 权限补充:连接Graph时添加
AuditLog.Read.All权限,读取用户登录活动必须依赖该权限;User.Read.All用于获取用户基础信息。 - 登录信息获取:通过
-Property SignInActivity让Get-MgUser返回登录活动数据,提取LastSignInDateTime并格式化,同时处理未登录用户的空值场景。 - 经理邮箱获取:展开
manager后,直接通过$_.Manager.UserPrincipalName获取经理邮箱,比原脚本的AdditionalProperties更稳定;添加?运算符避免无经理的用户触发报错。 - CSV导出优化:添加
-NoTypeInformation去除CSV头部的冗余类型信息,-Encoding UTF8确保中文内容显示正常。
内容的提问来源于stack exchange,提问作者Bradley
相关产品推荐
相关产品推荐

