求助:导入含姓名列的CSV至Active Directory时列被忽略问题
AD用户导入问题的解决方法
问题根源
- 必须加name列的原因:
New-ADUser命令的-Name参数是必填项,没有这个值的话命令直接报错。之前没加name列时,PowerShell找不到必填的Name参数值,所以导入失败。 - firstname/lastname不生效的原因:你的CSV列名是
firstname、lastname,但New-ADUser对应的AD用户属性参数是-GivenName(名)和-Surname(姓),列名和参数名不匹配,PowerShell没法自动把CSV里的这两列映射到AD属性上,所以导入后姓名信息是空的。
解决办法
方法1:手动指定参数映射
直接在ForEach-Object里把CSV列的值对应到New-ADUser的正确参数上,确保每个属性都被正确设置:
Import-Csv .\New-Users.csv | ForEach-Object { New-ADUser -Name $_.name ` -GivenName $_.firstname ` -Surname $_.lastname ` -DisplayName $_.Displayname ` -EmployeeNumber $_.employeenumber ` -Enabled $True ` -AccountPassword (ConvertTo-SecureString Pass123456 -AsPlainText -Force) }
方法2:修改CSV列名匹配AD参数
把CSV里的列名改成和New-ADUser参数一致的名称:
firstname→GivenNamelastname→Surname- 保留
name、Displayname、employeenumber(也可以把employeenumber改成EmployeeNumber更规范)
改完后用你原来的命令就能自动映射所有属性:
Import-Csv .\New-Users.csv | New-ADUser -Enabled $True -AccountPassword (ConvertTo-SecureString Pass123456 -AsPlainText -force)
方法3:用计算属性转换列名
如果不想修改CSV,可通过Select-Object添加计算属性,把CSV列名转换成AD参数名后再管道给New-ADUser:
Import-Csv .\New-Users.csv | Select-Object ` @{Name='Name'; Expression={$_.name}}, @{Name='GivenName'; Expression={$_.firstname}}, @{Name='Surname'; Expression={$_.lastname}}, @{Name='DisplayName'; Expression={$_.Displayname}}, @{Name='EmployeeNumber'; Expression={$_.employeenumber}} | New-ADUser -Enabled $True -AccountPassword (ConvertTo-SecureString Pass123456 -AsPlainText -Force)
内容的提问来源于stack exchange,提问作者V_093
相关产品推荐
相关产品推荐

