使用PowerShell脚本导入CSV用户至Active Directory的问题与解决
解决PowerShell导入CSV至Active Directory的语法错误问题
之前我尝试用PowerShell把CSV里的用户批量导入Active Directory时,踩了语法错误的坑,现在已经解决了,分享一下完整的方案:
我的CSV格式与数据
CSV列是name,surname,ou,具体内容如下:
Steven,Boone,Management Rodney,Fisher,Sales Taylor,Bautista,Management Nathan,Morris,Management
修正后的完整PowerShell代码
# 导入Active Directory模块,操作AD必须先加载这个模块 Import-Module ActiveDirectory # 读取指定路径的CSV文件 $ADDSUsers = Import-Csv C:\0469697M_gxt.csv # 循环处理CSV里的每一条用户数据 foreach ($user in $ADDSUsers) { # 拼接用户的完整姓名 $Name = $user.name + " " + $user.surname # 从CSV中获取用户所属的OU名称 $OU = $user.ou # 构建完整的OU LDAP路径,这里要替换成你实际的域结构哦 $OUPath = "OU=$OU,DC=contoso,DC=com" # 生成SamAccountName(这里用小写的"名.姓"格式,你可以根据需求调整) $SamAccountName = ($user.name).ToLower() + "." + ($user.surname).ToLower() # 生成用户主体名称,格式要匹配你的域后缀 $UserPrincipalName = $SamAccountName + "@contoso.com" # 创建AD用户,这里补充了创建必需的参数 New-ADUser ` -Name $Name ` -GivenName $user.name ` -Surname $user.surname ` -SamAccountName $SamAccountName ` -UserPrincipalName $UserPrincipalName ` -Path $OUPath ` -Enabled $true ` -AccountPassword (ConvertTo-SecureString "P@ssw0rd123" -AsPlainText -Force) }
关键注意事项
- OU路径要准确:
$OUPath必须是符合你AD域结构的完整LDAP路径,比如你的域是acme.org,那DC部分就要改成DC=acme,DC=org - 必填参数不能少:一开始的代码缺了
SamAccountName、AccountPassword这些创建用户必需的参数,补上之后才不会报错 - 密码安全:示例里用了明文转安全字符串,生产环境千万不要这么做,建议用随机密码生成或者从安全存储读取
- 权限与模块:运行脚本的账号得有创建AD用户的权限,而且要确保机器上已经安装了ActiveDirectory模块(域控制器默认有,成员服务器需要安装RSAT工具)
内容的提问来源于stack exchange,提问作者Sam_M
相关产品推荐
相关产品推荐

