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

导出AzureAD组所有者到CSV:PowerShell脚本优化需求

Azure AD组所有者CSV导出脚本(解决多所有者分行/批量循环问题)

最终脚本

# 连接Azure AD(首次执行会弹出登录窗口,需使用有权限的账号)
Connect-AzureAD

# 初始化空数组存储最终结果
$groupOwnerData = @()

# 获取所有Azure AD组(如需过滤,可添加-Filter参数,例:-Filter "SecurityEnabled eq true" 仅获取安全组)
$allAzureADGroups = Get-AzureADGroup -All $true

# 遍历每个组处理所有者信息
foreach ($group in $allAzureADGroups) {
    # 获取当前组的全部所有者
    $groupOwners = Get-AzureADGroupOwner -ObjectId $group.ObjectId -All $true

    # 将所有者邮箱拼接为逗号分隔的字符串(如需显示名称,替换为$groupOwners.DisplayName)
    $ownerString = $groupOwners.Mail -join ", "

    # 构造包含组信息和所有者的自定义对象
    $groupRecord = [PSCustomObject]@{
        "组名称" = $group.DisplayName
        "组ObjectID" = $group.ObjectId
        "所有者列表" = if ($ownerString) { $ownerString } else { "无指定所有者" }
    }

    # 将当前组记录加入结果数组
    $groupOwnerData += $groupRecord
}

# 导出到CSV文件(修改路径为你需要的存储位置)
$groupOwnerData | Export-Csv -Path "D:\AzureAD_Group_Owners.csv" -Encoding UTF8 -NoTypeInformation

脚本核心逻辑拆解

  • 连接Azure AD:通过Connect-AzureAD完成权限验证,确保能读取组及所有者数据。
  • 批量获取组:Get-AzureADGroup -All $true拉取全量Azure AD组,支持添加过滤参数缩小处理范围。
  • 循环处理单组:
    • 按组ObjectID精准获取所有者:Get-AzureADGroupOwner针对当前组提取所有关联所有者。
    • 合并多所有者为单行:使用-join ", "将多个所有者的邮箱(或显示名)合并为单个字符串,彻底解决同一组多行重复的问题。
    • 构造结构化数据:用[PSCustomObject]统一组名、组ID、所有者列表的输出格式,保证每行对应一个组的完整信息。
  • 导出CSV:Export-Csv生成UTF8编码的CSV文件避免乱码,-NoTypeInformation移除PowerShell自带的类型头行,让CSV更适配各类表格工具。

自定义调整建议

  • 若需显示所有者姓名而非邮箱,将$groupOwners.Mail替换为$groupOwners.DisplayName。
  • 如需过滤特定类型组,在Get-AzureADGroup后添加过滤参数,例如仅获取启用邮件的组:-Filter "MailEnabled eq true"。
  • 可修改CSV导出路径,确保当前用户拥有该路径的写入权限。

内容的提问来源于stack exchange,提问作者going-cmd-o

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:06:22