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

PowerShell创建AD账户后CN含反斜杠,求去除转义字符方法

解决AD账户创建后CN名称带反斜杠的问题

在使用PowerShell批量创建AD账户时,发现生成的账户distinguishedName中CN字段后额外带有反斜杠转义符,例如创建TEAM3账户后,属性中显示为CN=TEAM3\,OU=User...。我通过CSV文件存储账户信息(字段包含Username,Password,FirstName,DisplayName,UPN,LastName),执行创建的脚本如下:

Import-Module ActiveDirectory
$userDetails = Import-Csv -Path $csvPath

foreach ($user in $userDetails) {
    # Set the user properties
    $username = $user.Username
    $firstname = $user.FirstName
    $lastname = $user.LastName
    $displayname = $user.DisplayName
    $upn = $user.UPN
    $mypassword = $user.Password

    $password = ConvertTo-SecureString -String $mypassword -AsPlainText -Force

    # Create the user account
    $newUser = New-ADUser -SamAccountName $username -UserPrincipalName $upn -GivenName $firstname `
        -Surname $lastname -DisplayName $displayname -Name "$firstname $lastname" -AccountPassword $password `
        -Enabled $true -Path $ou

    $newUser = Get-ADUser -Identity $username

    Write-Host "New User: $($newUser.SamAccountName)"
    # Add the user to a specific group
    $group = "SVP Users"  # Replace with the name of the group you want to add the user to
    Add-ADGroupMember -Identity $group -Members $newUser
    Write-Host "User account created: $username"
}

问题原因

反斜杠是LDAP路径的转义符,出现这个问题是因为New-ADUser的-Name参数使用了"$firstname $lastname"拼接值,若CSV中FirstName或LastName为空、或拼接后包含LDAP特殊字符,AD会自动对该值进行转义处理,导致CN字段出现不必要的反斜杠。

解决方案

显式指定-CN参数为用户名$username,或者将-Name参数直接设置为$username,强制CN与用户名保持一致,避免自动转义。修改后的核心代码如下:

方案一:新增-CN参数指定CN值

# 修改后的账户创建命令
$newUser = New-ADUser -SamAccountName $username -UserPrincipalName $upn -GivenName $firstname `
    -Surname $lastname -DisplayName $displayname -Name "$firstname $lastname" -CN $username `
    -AccountPassword $password -Enabled $true -Path $ou

方案二:直接将-Name设置为用户名

# 修改后的账户创建命令
$newUser = New-ADUser -SamAccountName $username -UserPrincipalName $upn -GivenName $firstname `
    -Surname $lastname -DisplayName $displayname -Name $username -AccountPassword $password `
    -Enabled $true -Path $ou

说明

AD中Name属性是对象的相对可分辨名称(RDN),默认会作为CN的值。通过显式指定-CN参数,可以独立设置CN字段,确保其与用户名一致,避免因Name属性的特殊字符导致的转义问题。

内容的提问来源于stack exchange,提问作者Sai Thiha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:50:34