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

如何将指定CSV文件转换为Active Directory用户?求脚本指导

从CSV批量创建Active Directory用户的脚本优化指导

原脚本存在的问题

  1. CSV字段名不匹配:你的CSV表头是firstname,但脚本里用$User.givenName调用,会导致无法读取用户名字;同理$User.sAMAccountName也不对,应该用CSV里的accountname字段。
  2. 语法错误:多条变量赋值写在同一行(比如$UserOu="OU=Users,DC=abc,DC=com" $NewUsersList=Import-CSV),PowerShell会报错,必须拆分到单独行。
  3. 缺少密码配置:CSV里没有Password列,$User.Password会返回空,无法完成用户密码设置,而AD用户必须设置密码才能启用。
  4. New-ADUser参数不全:没指定用户要创建到哪个OU(-Path)、用户主体名称(UPN)、姓氏、显示名,也没有启用账户的设置,这些都是创建AD用户的必要项。

修正后的完整脚本

你的CSV内容(D:\students.csv):

firstname,lastname,office,phone,title,accountname
zak,A,NY,123-123-123-123,Teacher,Zak.Alex

PowerShell脚本:

# 导入AD模块
Import-Module ActiveDirectory

# 配置域信息和用户OU路径
$Domain = "@abc.com"
$UserOu = "OU=Users,DC=abc,DC=com"
# 导入CSV文件
$NewUsersList = Import-CSV "D:\students.csv"

# 设置默认密码(如果CSV里没有密码列,用这个默认值;如果要从CSV读,需在表头加Password列)
$DefaultPassword = ConvertTo-SecureString "P@ssw0rd123!" -AsPlainText -Force

# 遍历CSV里的每个用户
ForEach ($User in $NewUsersList) {
    # 从CSV读取用户属性
    $givenName = $User.firstname
    $surName = $User.lastname
    $sAMAccountName = $User.accountname
    $userPrincipalName = $sAMAccountName + $Domain
    $displayName = "$givenName $surName"
    $office = $User.office
    $phone = $User.phone
    $title = $User.title

    # 创建AD用户
    New-ADUser -Name $displayName `
        -GivenName $givenName `
        -Surname $surName `
        -SamAccountName $sAMAccountName `
        -UserPrincipalName $userPrincipalName `
        -DisplayName $displayName `
        -Office $office `
        -OfficePhone $phone `
        -Title $title `
        -Path $UserOu `
        -AccountPassword $DefaultPassword `
        -Enabled $true `
        -ChangePasswordAtLogon $true  # 强制用户首次登录修改密码
}

关键说明

  • 字段匹配:严格对应CSV的表头字段名,比如$User.firstname对应CSV里的firstname,确保能正确读取数据。
  • 密码处理:这里用了默认密码,如果你需要从CSV读取每个用户的独立密码,只需在CSV表头添加Password列,然后把$DefaultPassword换成ConvertTo-SecureString $User.Password -AsPlainText -Force。
  • OU指定:通过-Path $UserOu确保用户创建到指定的OU下,避免默认创建到Users容器。
  • 账户启用:-Enabled $true直接启用账户,-ChangePasswordAtLogon $true强制用户首次登录修改密码,符合安全规范。
  • 语法规范:用反引号(`)换行拆分长命令,让脚本更易读;每条变量赋值单独一行,避免语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:15:34