我创建了以下脚本来从 csv 获取数据并在 AD 中创建新用户:
Import-Csv c:\newusers.csv | ForEach-Object -Process {New-QADUser -name $_.'un' -ParentContainer 'CN=users,DC=domain,DC=local' -SamAccountName $_.'un' -FirstName $_.'fn' -LastName $_.'ln' -description '6' -userprincipalname $_.'un' -UserPassword 'P@ssword' | Enable-QADUser | Set-QADUser -HomeDirectory '\\srv1\home\$_.un' -HomeDrive 'H:' -UserMustChangePassword $true | new-item c:\home\$_.un -type directory}
除了主文件夹的新项目创建之外,一切似乎都正常。-homedirectory
和-homedrive
命令有效,它们在用户配置文件中被正确命名和映射,但当我尝试在驱动器上创建实际文件夹时,它会创建一个名为的文件夹$_.un
,然后抛出对象已存在的错误。
我尝试过c:\home\$_.un
、c:\home\$_.'un'
,c:\home\'$_.un
结果都差不多。有人能解释一下我的语法哪里错了吗?
答案1
您可以通过添加$un
如下变量来解决此问题:
Import-Csv c:\newusers.csv | ForEach-Object -Process {**$un=$_.un**; New-QADUser -name $.'un' -ParentContainer 'CN=users,DC=domain,DC=local' -SamAccountName $.'un' -FirstName $.'fn' -LastName $.'ln' -description '6' -userprincipalname $.'un' -UserPassword 'P@ssword' | Enable-QADUser | Set-QADUser -HomeDirectory '\srv1\home\$.un' -HomeDrive 'H:' -UserMustChangePassword $true | new-item **c:\home\$un** -type directory}