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

PowerShell Graph SDK脚本:过滤无许可证用户及添加用户类型列求助

解决Microsoft Graph API PowerShell脚本过滤用户并生成CSV的问题

问题说明

需要生成保存至C:\temp的CSV文件,包含以下内容:

  • 本地AD及Azure AD用户的DisplayName(显示名称)
  • 用户上次更改密码的时间戳lastPasswordChangeDateTime
  • 过滤掉无许可证的资源账户(如共享邮箱)
  • 可选需求:新增列标识用户属于本地AD还是Azure AD

原脚本可正常生成基础CSV,但尝试过滤无许可证用户时遇到两个问题:

  1. 使用-Filter 'assignedLicenses/$count eq 0'无法实现过滤
  2. 自定义循环生成对象时,脚本无报错但输出空白CSV

问题原因

  1. Graph API过滤限制:assignedLicenses/$count无法直接在-Filter中使用,Graph API不支持对集合属性的计数过滤
  2. 脚本逻辑错误:
    • lastPasswordChangeDateTime是Get-MgUser返回对象的直接属性,而非PasswordProfile子属性
    • foreach循环内的[PSCustomObject]未正确输出到管道,导致无内容写入CSV
    • 默认Get-MgUser未返回AssignedLicenses和OnPremisesSyncEnabled等属性,导致过滤和判断逻辑失效

解决方案

1. 正确获取所需属性

使用-Property参数指定需要的属性,确保能获取到许可证信息和同步状态:

Get-MgUser -All -Property DisplayName, lastPasswordChangeDateTime, AssignedLicenses, OnPremisesSyncEnabled

2. 过滤有许可证的用户

通过Where-Object判断AssignedLicenses的数量,确保只保留有许可证的用户:

Where-Object { $_.AssignedLicenses.Count -gt 0 }

3. 标识用户来源

通过OnPremisesSyncEnabled属性判断:

  • 值为$true:本地AD同步用户
  • 值为$false或$null:Azure AD原生用户

完整脚本

# 获取所有有许可证的用户,并指定所需属性
$usersWithLicenses = Get-MgUser -All -Property DisplayName, lastPasswordChangeDateTime, AssignedLicenses, OnPremisesSyncEnabled |
    Where-Object { $_.AssignedLicenses.Count -gt 0 }

# 生成自定义对象并导出CSV
$usersWithLicenses | ForEach-Object {
    [PSCustomObject]@{
        DisplayName               = $_.DisplayName
        LastPasswordChangeDateTime = if ($_.lastPasswordChangeDateTime) { $_.lastPasswordChangeDateTime } else { "N/A" }
        UserSource                = if ($_.OnPremisesSyncEnabled) { "本地AD" } else { "Azure AD" }
    }
} | Export-Csv -Path "C:\temp\userupdate.csv" -NoTypeInformation -Encoding UTF8

脚本说明

  • -NoTypeInformation:避免CSV文件头部添加冗余类型信息
  • -Encoding UTF8:确保CSV文件支持中文显示
  • 空值处理:当lastPasswordChangeDateTime为空时,显示"N/A",兼容PowerShell 5.x及以上版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:43:34