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

PowerShell脚本导出AzureAD角色与成员信息至CSV的实现问题咨询

问题根因说明
  • Write-Host 仅输出内容到控制台,不会进入PowerShell管道,也无法被赋值给变量,所以你存储的$Export里从来就没有角色名称的内容
  • Format-Table 是面向控制台展示的格式化命令,输出的是格式化渲染对象而非原始结构化数据,直接导出CSV/文本都会出现结构混乱的问题
最优实现脚本
# 连接Azure AD
Connect-AzureAD

# 定义数组存储结构化导出结果
$exportResults = @()

# 遍历所有Azure AD目录角色
foreach ($ADRole in Get-AzureADDirectoryRole) {
    # 可选:保留控制台打印角色名的需求,不影响导出结果
    Write-Host $ADRole.DisplayName

    # 拉取当前角色的所有成员
    $roleMembers = Get-AzureADDirectoryRoleMember -ObjectId $ADRole.ObjectId
    
    # 处理无成员的角色,保证空角色也出现在结果中满足审计要求
    if ($null -eq $roleMembers -or $roleMembers.Count -eq 0) {
        $exportResults += [PSCustomObject]@{
            ADRoleDisplayName = $ADRole.DisplayName
            MemberDisplayName = $null
            MemberUserPrincipalName = $null
            MemberUserType = $null
            MemberObjectID = $null
        }
        continue
    }

    # 遍历角色下的每个成员,生成对应结构化记录
    foreach ($member in $roleMembers) {
        $exportResults += [PSCustomObject]@{
            ADRoleDisplayName = $ADRole.DisplayName
            MemberDisplayName = $member.DisplayName
            MemberUserPrincipalName = $member.UserPrincipalName
            MemberUserType = $member.UserType
            MemberObjectID = $member.ObjectId
        }
    }
}

# 导出为CSV,指定编码避免乱码,去掉多余的类型说明行
$exportResults | Export-Csv -Path "C:\Temp\AzureAD角色成员清单.csv" -Encoding UTF8 -NoTypeInformation
效果说明
  • 导出的CSV完全匹配你要求的字段结构,每个成员对应一行数据,支持按任意字段筛选
  • 未分配用户的空角色会单独保留一行记录,角色名称字段正常展示,其余成员字段留空,符合审计要求
  • 导出时指定UTF8编码避免特殊字符/中文乱码,-NoTypeInformation参数会去除CSV顶部的冗余类型说明

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 18:57:00