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

获取AD组用户的Domain\User格式信息并导出CSV遇空输出求助

问题原因及修复方案

导致空输出的核心问题

  • 变量拼写错误:最后导出时用了$reult,但前面定义的是$result,变量名不匹配直接导致导出空内容。
  • 未输出可捕获的对象:foreach-object块内只用Write-Host打印内容,Write-Host仅输出到控制台,不会将数据存入$result变量,所以$result始终为空。
  • 域名提取不完整:原正则仅提取第一个DC=片段,无法获取完整域名(比如DC=contoso,DC=com会只得到contoso,正确域名应为contoso.com)。

修正后的脚本

# 获取目标AD组
$ADGroup = Get-ADGroup 'myadgroup1'
# 递归获取组内所有成员(如需仅直接成员,移除-Recursive)
$result = Get-ADGroupMember -Identity $ADGroup -Recursive | 
    Where-Object { $_.objectClass -eq 'user' } |  # 仅筛选用户对象,排除组、计算机等
    ForEach-Object {
        # 从distinguishedName提取完整域名
        $dcParts = [regex]::Matches($_.distinguishedName, 'DC=([^,]+)').Groups | 
            Where-Object { $_.Success } | 
            Select-Object -ExpandProperty Value | 
            ForEach-Object { $_ -replace 'DC=' }
        $domain = $dcParts -join '.'
        # 拼接Domain\User格式
        $domainUser = "$domain\$($_.SamAccountName)"
        # 输出自定义对象,供后续导出使用
        [PSCustomObject]@{
            GroupName = $ADGroup.Name
            DomainUser = $domainUser
            SamAccountName = $_.SamAccountName
            FullDomain = $domain
        }
    }
# 导出到CSV文件
$result | Export-Csv ".\userinfo.csv" -NoTypeInformation -UseCulture

关键优化点说明

  • 加入Where-Object { $_.objectClass -eq 'user' }:过滤掉组内嵌套的其他组、计算机对象,仅保留用户。
  • 修正域名提取逻辑:完整提取所有DC=片段并拼接成标准域名格式。
  • 输出PSCustomObject:将需要的数据封装为对象,确保$result能捕获到有效数据,正常导出CSV。
  • 可选-Recursive参数:如需获取嵌套组内的用户,保留该参数;仅需直接成员则移除。

内容的提问来源于stack exchange,提问作者Madhusudan G J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:45:44