如何创建最长12字符的SamAccountName:姓氏前11位+名字首字母
解决PowerShell创建AD用户时SamAccountName的长度限制规则问题
需求回顾
创建用户时,SamAccountName需满足:
- 最长12字符
- 规则为姓氏最多取前11个字符,加上名字的首字母
- 若该账号名已存在,需追加序号,且追加后仍不超过12字符限制
修改后的完整脚本
$OU = "OU=Users,DC=domain,DC=com" $PW = "Welcome$(Get-Random -minimum 0001 -maximum 9999)!" $FirstName = Read-Host "请输入新用户的名字" $LastName = Read-Host "请输入新用户的姓氏" # 处理姓氏:最多取前11个字符 $maxLastNameLength = 11 $shortLastName = if ($LastName.Length -gt $maxLastNameLength) { $LastName.Substring(0, $maxLastNameLength) } else { $LastName } # 生成基础SamAccountName:短姓氏 + 名字首字母 $AccountName = $shortLastName + $FirstName[0] # 检查账号是否存在,若存在则追加序号(确保总长度不超过12) $count = 1 while (Get-ADUser -Filter "SamAccountName -eq '$AccountName'") { # 计算序号的位数,确定姓氏可保留的最大长度 $countDigits = $count.ToString().Length $availableLastNameLength = 11 - $countDigits $adjustedLastName = if ($LastName.Length -gt $availableLastNameLength) { $LastName.Substring(0, $availableLastNameLength) } else { $LastName } # 生成带序号的账号名,总长度=adjustedLastName长度 + 1(首字母) + countDigits ≤ 12 $AccountName = '{0}{1}{2}' -f $adjustedLastName, $FirstName[0], $count++ } $UPN = "$($FirstName).$($LastName)@domain.com" # 处理UPN重复的情况 $count = 1 while (Get-ADUser -Filter "UserPrincipalName -eq '$UPN'") { $UPN = '{0}.{1}{2}@domain.com' -f $FirstName, $LastName, $count++ } # 创建参数哈希表 $userParams = @{ Name = "$($LastName), $($FirstName)" DisplayName = "$($LastName), $($FirstName)" FirstName = $FirstName LastName = $LastName SamAccountName = $AccountName OnPremisesOrganizationalUnit = $OU UserPrincipalName = $UPN Password = $PW | ConvertTo-SecureString -AsPlainText -Force ResetPasswordOnNextLogon = $true Archive = $true } # 创建远程邮箱用户 try { New-RemoteMailbox @userParams -ErrorAction Stop } catch { Write-Error $_.Exception.Message }
关键修改说明
姓氏截取处理
- 定义
$maxLastNameLength = 11,通过判断姓氏长度,截取前11个字符作为$shortLastName,确保后续组合名字首字母后总长度不超过12。
- 定义
重复账号名的序号追加逻辑
- 当基础账号名存在时,计算当前序号的位数(如count=1是1位,count=10是2位)
- 动态调整姓氏可保留的长度:
11 - 序号位数,这样姓氏+首字母+序号的总长度始终≤12(比如序号是2位时,姓氏取前9位,9+1+2=12) - 重新生成符合长度限制的带序号账号名,避免因追加序号导致超过12字符上限。
内容的提问来源于stack exchange,提问作者ak2595
相关产品推荐
相关产品推荐

