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

如何通过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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:16:25