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

PowerShell导入CSV用户列表导出所属组失败,求助排查

解决导入用户CSV并导出AD组信息的问题

错误原因分析

你遇到的Get-AdUser : The search filter cannot be recognized错误,核心问题有两个:

  1. 原脚本调用了$_.username,但你的CSV里根本没有username字段,导致筛选器内容无效
  2. 姓名中的特殊字符(如Ø、Ö)直接写入筛选器时,可能因编码问题导致AD无法识别

修正后的脚本

以下是适配你CSV结构的PowerShell脚本,会优先用ID查询AD用户,查不到则尝试拼接姓名查询,最后导出包含用户信息和所属AD组的CSV:

# 导入用户列表CSV
$userList = Import-Csv -Path ".\dab.csv" -Encoding UTF8

# 存储最终结果
$outputData = @()

foreach ($item in $userList) {
    # 优先用ID作为SamAccountName查询AD用户(如果ID是域账号)
    $adUser = Get-ADUser -Filter "SamAccountName -eq '$($item.ID)'" -Properties MemberOf -ErrorAction SilentlyContinue

    # 若ID查询失败,尝试用拼接的全名作为DisplayName查询
    if (-not $adUser) {
        $fullName = "$($item.FName.Trim()) $($item.LName.Trim())"
        $adUser = Get-ADUser -Filter "DisplayName -eq '$fullName'" -Properties MemberOf -ErrorAction SilentlyContinue
    }

    if ($adUser) {
        # 获取所有所属AD组的名称,用分号分隔
        $groupNames = $adUser.MemberOf | ForEach-Object { (Get-ADGroup $_).Name } -join ";"
        $outputItem = [PSCustomObject]@{
            ID        = $item.ID
            FName     = $item.FName
            LName     = $item.LName
            ADGroups  = $groupNames
        }
    }
    else {
        # 记录未在AD中找到的用户
        $outputItem = [PSCustomObject]@{
            ID        = $item.ID
            FName     = $item.FName
            LName     = $item.LName
            ADGroups  = "AD中未找到该用户"
        }
    }

    $outputData += $outputItem
}

# 导出结果到新CSV,用UTF8编码避免乱码
$outputData | Export-Csv -Path ".\用户AD组查询结果.csv" -NoTypeInformation -Encoding UTF8

关键注意事项

  • 如果你的ID不是域账号的SamAccountName,比如是员工号,把筛选器改成"EmployeeID -eq '$($item.ID)'"
  • 确保CSV文件编码是UTF8,避免特殊字符乱码
  • 脚本需要在已加入域的机器上运行,且当前用户有AD查询权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:40:26