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

使用PowerShell批量修改AD用户,添加计算机完整路径遇阻求助

解决PowerShell批量更新AD用户计算机路径字段的问题

嘿,我来帮你搞定这个小问题!你已经走对路了,只是没把用户的SAMAccountName正确拼接到后缀前面而已~

核心问题分析

你当前的脚本应该是直接写死了后缀.serve.group.net,但没有动态获取每个用户的SAMAccountName并和后缀拼接,所以才只得到了后缀部分。

正确的脚本示例

下面我给你写一个完整的示例,假设你要更新的是AD用户的Description字段(如果是自定义属性,比如extensionAttribute1,直接替换字段名就行):

# 第一步:获取需要修改的AD用户集合
# 你可以根据实际需求调整筛选条件,比如指定OU、用户组,或者只筛选启用的用户
$targetUsers = Get-ADUser -Filter * -SearchBase "OU=你的用户OU路径,DC=serve,DC=group,DC=net" -Properties SAMAccountName

# 第二步:循环处理每个用户
foreach ($user in $targetUsers) {
    # 拼接完整的计算机路径:SAMAccountName + 固定后缀
    $fullComputerPath = "$($user.SAMAccountName).serve.group.net"
    
    # 更新AD用户的目标字段,这里把Description换成你要修改的字段
    Set-ADUser -Identity $user -Description $fullComputerPath
    
    # 可选:输出日志,方便你确认修改进度
    Write-Host "已完成用户 [$($user.Name)] 的字段更新,值为:$fullComputerPath"
}

关键注意事项

  • 正确引用用户属性:用$($user.SAMAccountName)这种语法,确保PowerShell能正确解析AD用户对象的SAMAccountName属性,而不是把它当成字符串的一部分。
  • 按需筛选用户:不要直接用-Filter *(会获取所有AD用户),可以改成更精准的筛选,比如-Filter {Enabled -eq $true}只处理启用的用户,或者加上-SearchBase指定特定OU。
  • 先测试再执行:如果你担心误改,可以在Set-ADUser命令末尾加上-WhatIf参数,这样脚本只会模拟操作,不会实际修改AD数据,确认没问题后再去掉这个参数。

测试命令示例

# 针对单个测试用户进行模拟修改
$testUser = Get-ADUser -Identity "测试用户的SAMAccountName"
$testPath = "$($testUser.SAMAccountName).serve.group.net"
Set-ADUser -Identity $testUser -Description $testPath -WhatIf

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:36:43