如何用PowerShell批量将Active Directory组名转换为大写
用PowerShell批量修改Active Directory组名(指定小写部分转大写)
完全可以用PowerShell直接完成,不用依赖CSV文件,下面是针对你的需求的具体实现:
前提准备
- 确保已安装RSAT的Active Directory模块,运行
Import-Module ActiveDirectory导入模块(需管理员权限) - 拥有修改AD组属性的权限
单个组修改示例
针对你提到的GLB_PERM_AP_SNOW_IT_Assignment_Group_Managers转GLB_PERM_AP_SNOW_IT_ASSIGNMENT_GROUP_MANAGERS的需求:
# 获取目标组 $group = Get-ADGroup -Identity "GLB_PERM_AP_SNOW_IT_Assignment_Group_Managers" -Properties Name # 拆分前缀和需要转大写的后缀 $splitIndex = $group.Name.LastIndexOf('_') + 1 $prefix = $group.Name.Substring(0, $splitIndex) $suffix = $group.Name.Substring($splitIndex) $newName = $prefix + $suffix.ToUpper() # 执行修改(可先加-WhatIf参数测试) Set-ADGroup -Identity $group -Name $newName -SamAccountName $newName
批量处理200个组
如果这些组都有统一的前缀(比如GLB_PERM_AP_SNOW_IT_),可以批量过滤并修改:
Import-Module ActiveDirectory # 过滤出所有需要修改的组(根据实际命名规则调整Filter) $targetGroups = Get-ADGroup -Filter "Name -like 'GLB_PERM_AP_SNOW_IT_*'" -Properties Name foreach ($group in $targetGroups) { # 拆分并生成新名称 $splitIndex = $group.Name.LastIndexOf('_') + 1 $prefix = $group.Name.Substring(0, $splitIndex) $suffix = $group.Name.Substring($splitIndex) $newName = $prefix + $suffix.ToUpper() # 仅当新名称和原名称不同时执行修改 if ($newName -ne $group.Name) { Write-Host "正在修改: $($group.Name) -> $newName" # 先加-WhatIf测试,确认无误后移除该参数执行实际修改 Set-ADGroup -Identity $group -Name $newName -SamAccountName $newName -WhatIf } }
注意事项
- 测试阶段一定要加
-WhatIf参数,避免误修改 - 如果组的命名规则不是“最后一段下划线后转大写”,可以调整字符串拆分逻辑(比如按固定分隔符拆分后指定某段转大写)
- 修改后建议验证组的属性,确保
Name和SamAccountName同步更新
内容的提问来源于stack exchange,提问作者RENU MADHU
相关产品推荐
相关产品推荐

