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

如何适配脚本让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参数用于预测试,确认操作正确后再移除该参数执行实际修改

二、脚本运行方法

  1. 环境要求:

    • 需在已加入域的机器上运行,或安装了RSAT AD PowerShell模块的机器
    • 运行PowerShell时需具备AD用户修改权限(通常是域管理员或有权限的AD账户)
  2. 运行步骤:

    • 把上述代码复制到文本编辑器(比如Notepad),保存为.ps1后缀的文件(例如LinkComputerToUser.ps1)
    • 打开以管理员身份运行的PowerShell窗口
    • 若系统限制脚本执行,先执行命令解除限制(测试环境可用,生产环境谨慎):
      Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
      
    • 导航到脚本所在目录,执行脚本:
      .\LinkComputerToUser.ps1
      
    • 先观察-WhatIf输出的操作预览,确认所有关联逻辑正确后,移除脚本中的-WhatIf参数,重新运行脚本执行实际修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:40:38