如何适配脚本让Active Directory将计算机名写入用户自定义属性?
改写AD脚本实现计算机名写入用户自定义属性及运行方法
一、脚本改写实现
根据需求,我们需要遍历AD中的计算机,从其描述字段提取用户信息,关联到对应的AD用户后,把计算机名写入用户的自定义属性(这里沿用原脚本的extensionAttribute4,你可以根据实际需求替换成其他自定义属性)。改写后的脚本如下:
# 获取所有AD计算机对象,包含描述属性 Get-ADComputer -Properties Description | ForEach-Object { $computerName = $_.Name $ownerUsername = $_.Description.Trim() # 假设描述字段直接存储用户名,若格式有变化需调整解析逻辑 # 验证用户名是否有效并获取用户对象 $user = Get-ADUser -Filter "SamAccountName -eq '$ownerUsername'" -ErrorAction SilentlyContinue if ($user) { # 将计算机名写入用户的extensionAttribute4属性,-WhatIf用于测试,确认无误后可移除 Set-ADUser -Identity $user -Replace @{extensionAttribute4 = $computerName} -WhatIf Write-Host "已准备将计算机[$computerName]关联到用户[$ownerUsername]" } else { Write-Warning "计算机[$computerName]描述中的用户[$ownerUsername]不存在于AD中" } }
脚本逻辑说明
- 先获取所有AD计算机的
Description属性,从中提取所有者用户名 - 检查用户名是否在AD中存在,避免无效操作
- 将计算机名写入用户指定的自定义属性,保留
-WhatIf参数用于预测试,确认操作正确后再移除该参数执行实际修改
二、脚本运行方法
环境要求:
- 需在已加入域的机器上运行,或安装了RSAT AD PowerShell模块的机器
- 运行PowerShell时需具备AD用户修改权限(通常是域管理员或有权限的AD账户)
运行步骤:
- 把上述代码复制到文本编辑器(比如Notepad),保存为
.ps1后缀的文件(例如LinkComputerToUser.ps1) - 打开以管理员身份运行的PowerShell窗口
- 若系统限制脚本执行,先执行命令解除限制(测试环境可用,生产环境谨慎):
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser - 导航到脚本所在目录,执行脚本:
.\LinkComputerToUser.ps1 - 先观察
-WhatIf输出的操作预览,确认所有关联逻辑正确后,移除脚本中的-WhatIf参数,重新运行脚本执行实际修改
- 把上述代码复制到文本编辑器(比如Notepad),保存为
内容的提问来源于stack exchange,提问作者Silverstorm
相关产品推荐
相关产品推荐

