编写PowerShell脚本批量调整AD用户DisplayName格式为‘名 姓’
批量修改AD用户DisplayName格式的PowerShell脚本
前置要求
- 运行脚本的机器需要安装Active Directory PowerShell模块:可以通过Windows功能里的「RSAT: Active Directory Domain Services and Lightweight Directory Tools」安装,或直接在域控制器上运行(默认已预装)。
- 执行脚本的账号需要具备修改AD用户属性的权限。
脚本实现
以下脚本会自动识别DisplayName为「姓, 名」格式的用户,批量将其调整为「名 姓」格式:
# 筛选出DisplayName符合「LastName, FirstName」格式的AD用户 $targetUsers = Get-ADUser -Filter {DisplayName -like "*?*, *?*"} -Properties DisplayName foreach ($user in $targetUsers) { # 按「逗号+空格」拆分姓名部分,最多拆成2段 $nameSegments = $user.DisplayName -split ", ", 2 # 确认拆分出有效姓名段后再执行更新 if ($nameSegments.Count -eq 2) { $newDisplayName = "$($nameSegments[1]) $($nameSegments[0])" # 执行更新(加-WhatIf参数可预览修改,不实际变更属性) Set-ADUser -Identity $user -DisplayName $newDisplayName # 输出更新日志,方便核对修改内容 Write-Host "已更新:$($user.SamAccountName) | 原名称:$($user.DisplayName) → 新名称:$newDisplayName" } }
关键说明
- 安全测试:第一次运行时,建议在
Set-ADUser命令末尾加上-WhatIf参数,脚本只会输出拟修改的内容,不会实际更改用户属性,确认无误后再去掉该参数执行真实修改。 - 过滤逻辑:
-Filter {DisplayName -like "*?*, *?*"}确保只筛选出带「逗号+空格」且前后都有有效内容的DisplayName,避免误改其他格式的用户。 - 特殊情况处理:如果有用户的DisplayName包含多个逗号(比如「Smith, John Jr.」),脚本只会拆分第一个逗号,这类特殊用户建议先手动处理,或调整拆分的正则表达式适配场景。
内容的提问来源于stack exchange,提问作者s15199d
相关产品推荐
相关产品推荐

