优化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
相关产品推荐
相关产品推荐

