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

求助:获取Azure中隶属于Company A的用户所在组的列表(仅组名与描述)

脚本问题排查与修正

原脚本的核心问题

  • 参数语法错误:Get-AzureADUser没有-User参数,需用-UserPrincipalName指定用户的UPN(可直接传入$user.PrimarySmtpAddress)。
  • 筛选条件不符需求:原脚本中Company -eq "Company"未匹配目标的Company A,需修正筛选值。
  • 去重逻辑低效且易出错:数组拼接$FinalGroupList = $FinalGroupList + $group性能差,空数组时$FinalGroupList.displayname会返回$null,导致重复判断失效。
  • CSV导出冗余:循环创建对象再追加导出的方式没必要,直接选择属性一次性导出更高效。

修正后的脚本

# 首次运行需先安装模块:Install-Module AzureAD -Force -AllowClobber
Import-Module AzureAD

# 获取Company A的邮箱用户
$userList = Get-Recipient -Filter { Company -eq "Company A" } | Where-Object { $_.RecipientType -eq "UserMailbox" }

# 用哈希表实现高效去重,键为组名称,值为组对象
$uniqueGroups = @{}

foreach ($user in $userList) {
    # 通过UPN获取用户所属组
    $userGroups = Get-AzureADUser -UserPrincipalName $user.PrimarySmtpAddress | Get-AzureADUserMembership
    foreach ($group in $userGroups) {
        # 仅添加未记录的组
        if (-not $uniqueGroups.ContainsKey($group.DisplayName)) {
            $uniqueGroups[$group.DisplayName] = $group
        }
    }
}

# 提取组名称和描述,导出到CSV
$uniqueGroups.Values | Select-Object DisplayName, Description | Export-Csv -Path "C:\temp\Groups.csv" -NoTypeInformation -Encoding UTF8

关键修改说明

  1. 修正命令参数:改用-UserPrincipalName匹配用户的邮箱地址,符合Get-AzureADUser的语法要求。
  2. 匹配目标公司:将筛选条件中的公司名称改为Company A,贴合需求。
  3. 哈希表去重:利用哈希表键的唯一性实现高效去重,避免数组拼接的性能损耗和空数组判断错误。
  4. 简化导出流程:直接通过Select-Object提取所需属性,一次性完成CSV导出,省去循环创建对象的冗余操作。
  5. 指定编码:导出时添加-Encoding UTF8,避免中文描述出现乱码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:45:36