PowerShell脚本SKUName列重复问题:实现每行仅显示一次
解决PowerShell统计M365租户SKU许可证时SKUName重复显示的问题
你的PowerShell脚本在统计Microsoft 365租户内各公司的SKU许可证分配情况时,出现了SKUName列随Count数值重复显示相同许可证名称的问题(比如Count为4时,重复4次"Power Bi Pro"),核心原因是脚本未对相同公司+SKU的记录做分组聚合,而是直接遍历每条授权记录输出,导致重复显示。以下是针对性的修改方案:
常见错误脚本示例
如果你的原脚本类似下面的写法,就会出现重复问题:
# 错误示例:直接遍历每条用户授权记录,未做分组 $users = Get-MsolUser -All | Where-Object {$_.IsLicensed -eq $true} foreach ($user in $users) { foreach ($license in $user.Licenses) { [PSCustomObject]@{ CompanyName = $user.CompanyName SKUName = $license.AccountSkuId.Split(':')[1] Count = 1 } } } | Sort-Object CompanyName, SKUName
修改后的正确脚本
使用Msol模块的版本
# 分组聚合统计各公司SKU分配数量 $users = Get-MsolUser -All | Where-Object {$_.IsLicensed -eq $true} # 先收集所有用户的公司与SKU关联记录 $licenseRecords = $users | ForEach-Object { $currentCompany = $_.CompanyName $_.Licenses | ForEach-Object { [PSCustomObject]@{ CompanyName = $currentCompany SKUName = $_.AccountSkuId.Split(':')[1] } } } # 按公司+SKU分组,统计数量并输出 $licenseRecords | Group-Object CompanyName, SKUName | ForEach-Object { [PSCustomObject]@{ CompanyName = $_.Group[0] SKUName = $_.Group[1] Count = $_.Count } } | Sort-Object CompanyName, SKUName
使用AzureAD模块的版本
如果你的环境使用AzureAD模块而非Msol模块,可使用以下脚本:
# AzureAD模块下的分组统计 $users = Get-AzureADUser -All $true | Where-Object {$_.AssignedLicenses -ne $null} $licenseRecords = $users | ForEach-Object { $currentCompany = $_.CompanyName $_.AssignedLicenses | ForEach-Object { $skuInfo = Get-AzureADSubscribedSku -ObjectId $_.SkuId [PSCustomObject]@{ CompanyName = $currentCompany SKUName = $skuInfo.SkuPartNumber } } } $licenseRecords | Group-Object CompanyName, SKUName | ForEach-Object { [PSCustomObject]@{ CompanyName = $_.Group[0] SKUName = $_.Group[1] Count = $_.Count } } | Sort-Object CompanyName, SKUName
关键修改逻辑
- 收集基础记录:先提取所有已授权用户的公司名称和对应SKU信息,生成用户-许可证的关联记录
- 分组聚合:用
Group-Object CompanyName, SKUName将相同公司下的同一SKU记录合并 - 生成统计结果:遍历分组后的结果,提取公司名、SKU名,用
$_.Count获取该SKU的总分配数量 - 排序输出:最后按公司和SKU排序,保证结果整洁
期望输出示例
CompanyName SKUName Count ----------- ------- ----- Contoso Power Bi Pro 4 Contoso Office 365 E3 12 Fabrikam Power Bi Free 8
内容的提问来源于stack exchange,提问作者Elly
相关产品推荐
相关产品推荐

