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

PowerShell通过CSV将AD禁用用户迁移至指定OU的问题咨询

报错核心原因
  1. PowerShell 读取带特殊字符(短横线、空格)的CSV字段时,不能直接写$_.E-mail,会被识别为$_ . E - mail的运算表达式,读取不到值返回null,触发参数空值报错。
  2. Get-ADUser的-Identity参数仅支持4类值作为输入:可分辨名称(DN)、对象GUID、安全标识符(SID)、SAM账号名(sAMAccountName),不支持直接传入邮箱、UPN作为-Identity的参数值。
可替换sAMAccountName的有效字段

你提供的CSV字段里有两类唯一标识字段可用:

  • User logon name:如果该字段是不带@的短用户名(即Windows 2000以前版本的登录名,本质就是sAMAccountName),可以直接传入-Identity参数,查询效率最高
  • User principal name:AD全局唯一标识,不会出现重复,需要通过-Filter参数查询使用
修正后的脚本示例

固定目标OU版本(所有用户迁移到同一个停权OU)

# 替换为你的停权用户专属OU的可分辨名称
$TargetOU = "ou=停权用户,dc=MyDomain,dc=com,dc=au"

Import-Csv -Path "C:\你的用户列表.csv" | ForEach-Object {
    # 这里用User principal name查询,如果你要改用User logon name,把下面Filter里的字段名替换即可
    $adUser = Get-ADUser -Filter "UserPrincipalName -eq '$($_.'User principal name')'"
    # 加空值判断避免报错
    if ($adUser) {
        Move-ADObject -Identity $adUser.DistinguishedName -TargetPath $TargetOU
        Write-Host "已迁移用户:$($adUser.Name)"
    } else {
        Write-Warning "未找到对应用户:$($_.'User principal name')"
    }
}

CSV带目标OU版本(不同用户迁移到不同OU)

Import-Csv -Path "C:\你的用户列表.csv" | ForEach-Object {
    $adUser = Get-ADUser -Filter "UserPrincipalName -eq '$($_.'User principal name')'"
    $TargetOU = $_.'MoveTOOU'
    if ($adUser -and $TargetOU) {
        Move-ADObject -Identity $adUser.DistinguishedName -TargetPath $TargetOU
        Write-Host "已迁移用户:$($adUser.Name) 到OU:$TargetOU"
    } else {
        Write-Warning "用户或目标OU信息缺失,跳过:$($_.'User principal name')"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:06:04