PowerShell导出AAD用户时拆分ProvisionedPlans列表到CSV的问题
实现方案
以下是可直接运行的代码,会自动展开嵌套的ProvisionedPlans字段,按你需要的格式导出CSV:
# 提前运行Connect-AzureAD完成AAD身份验证 $allUsers = Get-AzureADUser -All $true $exportResult = @() foreach ($user in $allUsers) { # 保持和你原有逻辑一致,处理DisplayName特殊字符 $cleanDisplayName = $user.DisplayName -replace "\n", ' ' -replace '"', '`' # 遍历当前用户所有ProvisionedPlans条目 foreach ($plan in $user.ProvisionedPlans) { # 构造CSV行对象,需要其他用户字段可直接在下方添加 $row = [PSCustomObject]@{ ObjectId = $user.ObjectId DisplayName = $cleanDisplayName CapabilityStatus = $plan.CapabilityStatus ProvisioningStatus = $plan.ProvisioningStatus Service = $plan.Service # 示例:要加其他用户字段,取消注释下方对应行即可 # UserPrincipalName = $user.UserPrincipalName # AccountEnabled = $user.AccountEnabled # Department = $user.Department } $exportResult += $row } } # 导出到CSV,替换为你实际需要的文件路径,指定UTF8编码避免乱码 $exportResult | Export-Csv -Path "C:\Users\XXX\Desktop\AAD_ProvisionedPlans.csv" -NoTypeInformation -Encoding UTF8
注意事项
- 如果你需要同时导出所有基础用户字段+展开的计划字段,只需要在
$row的构造逻辑里,把你原有代码Select-Object中的字段按示例格式添加即可 - 如果需要保留没有
ProvisionedPlans的用户行,可以在遍历计划的循环外增加判断,当$user.ProvisionedPlans为空时,构造一行对应计划字段为空的对象加入结果数组 - 原有导出基础用户CSV的代码可以正常保留,和这段代码互不影响
内容的提问来源于stack exchange,提问作者Harry Leboeuf
相关产品推荐
相关产品推荐

