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

如何将AzureADUser的AssignedLicenses类转换为可用对象?

问题描述

使用带-UseWindowsPowershell参数导入的AzureAD模块执行Get-AzureADUser时,其AssignedLicenses属性返回的内容显示为类定义样式(如下),而非直观可操作的对象:

class AssignedLicense {
  DisabledPlans: System.Collections.Generic.List`1[System.String]
  SkuId: zzzzzzzz-2c81-4ef7-yyyy-5b5392b571df}


class AssignedLicense {
  DisabledPlans: System.Collections.Generic.List`1[System.String]
  SkuId: zzzzzzz-fae0-4ca2-xxxx-7a907fd6c235
}

尝试用ConvertFrom-JSON转换报错,且PowerShell无内置ConvertFrom-Class命令;手动提取SkuId因DisabledPlans长度不固定难以实现。执行的命令如下:

$userList = Get-AzureADUser -filter "AccountEnabled eq true"
foreach ($u in $userList) {
    $Assigned = ($u | Select-Object AssignedLicenses).AssignedLicenses
}
解决方案

实际上这些返回的是**.NET类实例集合**,并非不可操作,只是默认输出格式显示为类定义,可直接通过属性访问获取数据,或转换为PowerShell原生自定义对象:

方法1:直接访问属性

无需额外转换,直接通过.操作符访问每个许可证实例的SkuId和DisabledPlans属性:

$userList = Get-AzureADUser -Filter "AccountEnabled eq true"
foreach ($u in $userList) {
    foreach ($license in $u.AssignedLicenses) {
        # 直接获取SkuId
        Write-Host "许可证SKU ID:$($license.SkuId)"
        # 获取禁用的计划列表,可按需处理(比如转为逗号分隔字符串)
        Write-Host "禁用的服务计划:$($license.DisabledPlans -join ', ')`n"
    }
}

方法2:转换为PowerShell自定义对象

如果需要更符合PowerShell习惯的对象格式,可将每个许可证实例包装为PSCustomObject:

$userList = Get-AzureADUser -Filter "AccountEnabled eq true"
foreach ($u in $userList) {
    $processedLicenses = $u.AssignedLicenses | ForEach-Object {
        [PSCustomObject]@{
            UserPrincipalName = $u.UserPrincipalName
            SkuId = $_.SkuId
            DisabledPlans = $_.DisabledPlans  # 保留List类型,或用-join转为字符串
        }
    }
    # 输出处理后的对象,可直接用于后续筛选、导出等操作
    $processedLicenses | Format-Table -AutoSize
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:50:24