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

如何合并AzureAD命令输出,添加SkuPartNumber与用户经理信息

解决AzureAD用户信息、许可证SKU及经理信息合并输出问题

核心思路

  1. 预先获取所有AzureAD订阅SKU,构建SkuId与SkuPartNumber的映射表,避免循环中重复调用接口,提升运行效率
  2. 直接筛选出已分配许可证的用户集合
  3. 遍历每个用户,查询其经理信息,并通过映射表匹配对应的许可证SKU编号
  4. 将所有字段整合后输出为标准化表格

完整PowerShell脚本

# 1. 获取所有订阅SKU并构建映射表
$skuMapping = Get-AzureADSubscribedSku | Select-Object SkuId, SkuPartNumber

# 2. 筛选已分配许可证的用户
$licensedUsers = Get-AzureADUser -Filter "AssignedLicenses/$count ne 0" | Select-Object DisplayName, CompanyName, ObjectId, AssignedLicenses

# 3. 遍历用户,整合经理信息与SKU编号
$outputData = foreach ($user in $licensedUsers) {
    # 查询用户经理,处理无经理的情况
    $manager = Get-AzureADUserManager -ObjectId $user.ObjectId -ErrorAction SilentlyContinue
    $managerName = $manager ? $manager.DisplayName : "无经理信息"

    # 匹配用户所有许可证对应的SKU编号(多许可证用逗号分隔)
    $skuPartNumbers = $user.AssignedLicenses.SkuId | ForEach-Object {
        ($skuMapping | Where-Object { $_.SkuId -eq $_ }).SkuPartNumber
    } -Join ", "

    # 构建输出对象
    [PSCustomObject]@{
        公司名称       = $user.CompanyName
        显示名         = $user.DisplayName
        许可证SKU编号  = $skuPartNumbers
        经理姓名       = $managerName
        用户ObjectId   = $user.ObjectId
    }
}

# 4. 输出格式化表格
$outputData | Format-Table -AutoSize

关键细节说明

  • SKU映射表:提前一次性拉取所有SKU数据,后续直接通过SkuId匹配,避免循环内重复调用Get-AzureADSubscribedSku,减少接口请求次数
  • 经理信息兼容:添加错误静默处理,避免无经理的用户抛出异常,用统一文本标记缺失信息
  • 多许可证处理:若用户拥有多个许可证,自动将对应的SkuPartNumber拼接为字符串,保证表格字段的可读性
  • 精准筛选用户:通过Filter参数直接过滤已授权用户,减少不必要的数据加载与处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:01:55