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

如何将PowerShell中Azure AD重复许可证用户及组信息导出到CSV

解决Azure AD重复许可证用户及所属组导出CSV问题

核心思路是将每个用户的所属组列表拼接为逗号分隔的字符串,再通过自定义对象统一结构后导出CSV,完美适配组数量不固定的场景。

完整实现代码

# 连接Azure AD(未连接时执行)
Connect-AzureAD

# 获取拥有重复许可证的用户(替换为你已实现的重复许可证判断逻辑)
$duplicateLicenseUsers = Get-AzureADUser -All $true | Where-Object {
    # 示例:判断用户分配的许可证数量大于1
    $_.AssignedLicenses.Count -gt 1
}

# 初始化结果集合
$exportCollection = @()

foreach ($user in $duplicateLicenseUsers) {
    # 获取用户所属的所有安全组/Office 365组
    $userGroups = Get-AzureADUserMembership -ObjectId $user.ObjectId | Where-Object {$_.ObjectType -eq "Group"}
    
    # 将组名称拼接为逗号分隔的字符串
    $groupString = $userGroups.DisplayName -join ", "
    
    # 构建导出用的自定义对象
    $exportItem = [PSCustomObject]@{
        用户名 = $user.DisplayName
        用户主体名 = $user.UserPrincipalName
        所属组列表 = $groupString
    }

    $exportCollection += $exportItem
}

# 导出到CSV文件(指定UTF8编码避免中文乱码)
$exportCollection | Export-Csv -Path "D:\导出结果\重复许可证用户组信息.csv" -NoTypeInformation -Encoding UTF8

关键细节说明

  • 组列表拼接:使用-join ", "将组名称数组直接转为逗号分隔的字符串,无需关心组数量多少
  • 自定义对象:[PSCustomObject]可以灵活定义导出列,完全适配动态数据结构
  • 编码处理:添加-Encoding UTF8参数,避免CSV文件中的中文出现乱码
  • 替换逻辑:把$duplicateLicenseUsers的赋值部分替换成你已编写的重复许可证用户获取代码即可直接使用

可选优化

如果是大租户环境,Get-AzureADUserMembership循环查询效率较低,可以改用批量查询逻辑,但小量用户场景下上述代码足够高效。

内容的提问来源于stack exchange,提问作者Dr.Drunkards

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:45:11