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

优化MS365租户内按公司统计SKU的PowerShell脚本需求

优化MS365租户按公司统计SKU的PowerShell脚本

问题1:SKU代码映射为友好名称

定义哈希表存储SKU代码与友好名称的映射关系,在处理用户SKU数据时通过哈希表匹配替换。映射表可直接集成到脚本中,后续按需扩展即可。

问题2:SKUName去重显示

通过Group-Object按公司名称和SKU(或友好名称)分组,汇总每个分组内的授权数量,确保每个SKU在对应公司下仅显示一次统计结果。

问题3:自动遍历所有公司

先从租户用户数据中提取所有唯一的公司名称,再循环遍历每个公司执行统计逻辑,无需手动输入公司名。


优化后的完整脚本

# 1. 定义SKU代码与友好名称的映射哈希表
$skuMapping = @{
    "POWER_BI_PRO" = "Power BI Pro"
    "O365_BUSINESS_PREMIUM" = "Microsoft 365 Business Premium"
    "EXCHANGE_ONLINE_PLAN2" = "Exchange Online Plan 2"
    # 可根据实际SKU继续添加映射
}

# 2. 获取租户内所有唯一的公司名称
$allCompanies = Get-MsolUser -All | Select-Object -ExpandProperty CompanyName | Where-Object { $_ -ne $null -and $_ -ne "" } | Get-Unique

# 3. 循环遍历每个公司进行SKU统计
foreach ($company in $allCompanies) {
    Write-Host "`n=== 公司: $company 的SKU统计 ===" -ForegroundColor Cyan

    # 获取该公司所有用户的SKU授权信息
    $userSkus = Get-MsolUser -All -CompanyName $company | Select-Object -ExpandProperty Licenses

    # 按SKU分组并统计数量,同时替换为友好名称
    $skuStats = $userSkus | Group-Object -Property SkuPartNumber | ForEach-Object {
        $friendlyName = if ($skuMapping.ContainsKey($_.Name)) { $skuMapping[$_.Name] } else { $_.Name }
        [PSCustomObject]@{
            SKU代码 = $_.Name
            SKU名称 = $friendlyName
            授权数量 = $_.Count
        }
    }

    # 输出统计结果表格
    $skuStats | Format-Table -AutoSize
}

关键说明

  • 哈希表$skuMapping可根据租户实际使用的SKU补充条目,未匹配到的SKU会保留原代码,避免统计中断。
  • 使用Get-Unique确保遍历的公司名称无重复,避免重复统计同一公司。
  • 通过Group-Object按SKU代码分组,直接汇总授权数量,彻底解决SKU名称重复显示的问题。
  • 脚本中使用Write-Host区分不同公司的统计结果,提升可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:09:30