Active Directory:如何用PowerShell查找同职位用户位置并迁移新用户
你之前编写的代码使用了查询AD组的Get-ADGroup命令,和查询用户、获取用户OU的需求不符,可按照以下步骤调整实现需求:
操作前提
确保已在本地安装RSAT的Active Directory模块,执行以下命令导入模块:
Import-Module ActiveDirectory
执行操作的账号需拥有对应OU的用户移动权限。
步骤1:按职位筛选用户并提取目标OU路径
AD用户的职位对应属性为Title,用户所属OU路径可从用户的DistinguishedName(可分辨名称)属性中拆分获取,示例代码如下:
# 定义目标匹配职位 $targetTitle = "Technical Support Officer" # 筛选首个符合职位要求的现有用户,获取所需属性 $referenceUser = Get-ADUser -Filter "Title -eq '$targetTitle'" -Properties Title, DistinguishedName | Select-Object -First 1 # 校验是否找到匹配用户 if (-not $referenceUser) { Write-Host "未找到职位为 $targetTitle 的现有用户,请检查职位名称拼写是否正确" exit } # 拆分用户可分辨名称,提取所属OU路径(删除开头的CN=用户名部分) $targetOU = $referenceUser.DistinguishedName -replace '^CN=.*?,', ''
步骤2:移动新建用户到目标OU
确认新建用户的标识(支持sam账号名、可分辨名称、GUID等)后,执行移动操作:
# 替换为实际新建用户的sam账号名 $newUserName = "Barney" # 执行移动 Move-ADObject -Identity (Get-ADUser $newUserName).DistinguishedName -TargetPath $targetOU
注意事项
- 若同一职位的用户分散在不同OU,上述代码会取第一个匹配到的用户所属OU,可根据实际需求调整筛选逻辑,指定优先匹配的用户范围
- 若需要模糊匹配职位,可将Filter参数修改为
Title -like '*Support*',根据实际场景调整通配符规则 - 所有操作可先添加
-WhatIf参数试运行,确认执行结果符合预期后再去掉该参数正式执行
内容的提问来源于stack exchange,提问作者user16603959
相关产品推荐
相关产品推荐

