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

PowerShell中AD子OU定义语法及计算机移动脚本疑问

PowerShell AD计算机OU移动脚本解决方案

一、OU区分名(DN)格式纠正

你之前写的OU顺序是错的。LDAP区分名(DN)的规则是从最底层的子OU往上写,最后是域名组件。

针对你给出的路径ntds://testdomain.com/Deployments/Texas/Austin,正确的变量定义应该是:

$SourceOU = "OU=Austin, OU=Texas, OU=Deployments, DC=testdomain, DC=com"
$TargetOU = "OU=你的目标OU, DC=testdomain, DC=com" # 替换成实际目标OU的DN

注意:逗号后面的空格可选,但为了可读性建议保留;所有OU和DC的名称要和AD中完全一致,区分大小写(取决于AD林配置)。

二、完整PowerShell脚本实现

以下是满足需求的完整脚本,包含输入验证、OU检查和移动逻辑:

# 1. 提示用户输入计算机名称
$computerName = Read-Host "请输入要处理的计算机名称"

# 2. 获取AD计算机对象
try {
    $computer = Get-ADComputer -Identity $computerName -Properties DistinguishedName -ErrorAction Stop
}
catch {
    Write-Host "错误:找不到计算机 '$computerName',请检查名称是否正确。"
    exit 1
}

# 3. 检查计算机是否在指定的源OU中
if ($computer.DistinguishedName -like "*$SourceOU") {
    # 4. 移动计算机到目标OU
    try {
        Move-ADObject -Identity $computer.DistinguishedName -TargetPath $TargetOU -ErrorAction Stop
        Write-Host "成功:计算机 '$computerName' 已从 '$SourceOU' 移动到 '$TargetOU'"
    }
    catch {
        Write-Host "错误:移动计算机失败,原因:$_"
        exit 1
    }
}
else {
    Write-Host "提示:计算机 '$computerName' 当前不在指定的源OU '$SourceOU' 中,无需移动。"
}

三、脚本说明

  • 依赖:需要安装Active Directory模块(通常在域控制器或安装了RSAT工具的机器上可用)
  • 权限:运行脚本的账户需要有读取AD计算机信息和移动计算机对象的权限
  • 匹配逻辑:用-like "*$SourceOU"是因为计算机的DistinguishedName格式是CN=计算机名,OU=Austin,...,所以后缀匹配源OU的DN即可准确判断所在OU

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 02:12:03