如何通过PowerShell脚本设置AD用户的Pre-Windows 2000登录名
设置Active Directory用户的「用户登录名(Pre-Windows 2000)」字段
在PowerShell的New-ADUser cmdlet中,「用户登录名(Pre-Windows 2000)」对应的属性参数是-SamAccountName,这是Active Directory用户对象的核心标识属性之一。你可以通过以下步骤修改现有脚本:
1. 添加变量获取该字段值
你可以选择手动输入或自动生成这个值:
- 手动输入:在现有变量定义后添加输入逻辑,让用户直接指定Pre-Windows 2000登录名:
$samAccountName = Read-Host -Prompt "Enter Pre-Windows 2000 logon name: " - 自动生成:如果想基于用户姓名自动生成(比如名字首字母+姓氏),可以用以下逻辑:
注意:自动生成可能出现重名,建议添加重复检查(比如用# 示例:将名字首字母转为小写+姓氏小写,如John Doe → jdoe $samAccountName = $firstName.Substring(0,1).ToLower() + $lastName.ToLower()Get-ADUser -Filter "SamAccountName -eq '$samAccountName'"判断是否已存在)。
2. 在New-ADUser中添加参数
将-SamAccountName $samAccountName加入到你的New-ADUser命令中,同时修正原脚本里-AccountPassword参数的语法错误(缺少空格)。修改后的完整脚本片段如下:
$firstName = Read-Host -Prompt "Enter first name: " $lastName = Read-Host -Prompt "Enter last name: " $username = Read-Host -Prompt "Enter username: " $samAccountName = Read-Host -Prompt "Enter Pre-Windows 2000 logon name: " # 补充其他必要变量(如$displayName、$pName、$password等) ... New-ADUser ` -Name $displayName ` -GivenName $firstName ` -Surname $lastName ` -DisplayName $displayName ` -UserPrincipalName $pName ` -SamAccountName $samAccountName ` # 新增Pre-Windows 2000登录名参数 -AccountPassword (ConvertTo-SecureString $password -AsPlainText -Force) ` # 修正空格问题 -PasswordNeverExpires $True ` -Description $description ` -EmailAddress $email ` -Path $path ` -Enabled $true Get-ADUser -Identity $samAccountName # 建议用SamAccountName查询,比DisplayName更可靠
注意事项
SamAccountName长度不能超过20个字符,且不能包含空格、@、/等特殊字符,这是Active Directory的硬性限制。- 如果不手动指定该参数,PowerShell会自动基于
-UserPrincipalName的前缀生成,但显式设置能更好地符合你的命名规范。
内容的提问来源于stack exchange,提问作者tithurman27
相关产品推荐
相关产品推荐

