我目前正在为类进行分配,我们需要使用Dsadd命令将CSV用户列表导入到Active Directory中。Powershell脚本不会调用命令
这是我的脚本:
$CSV = Import-Csv -Delimiter "," -Path "$PWD\TestCSV.csv"
foreach ($user in $CSV)
{
$Member = $User.Title + ","
$Domain = $User.Domain + ", DC=Domains" + ", DC=com" + "`""
$Name = $User.Firstname + " " + $User.Lastname + ","
$Password = $User.Password
write-host Dsadd user `"CN=$Name"" DC=$Domain -pwd $User.Password -memberof `"CN=$Member" CN=Users, DC=$Domain"
}
当我执行它,它打印以下的PowerShell窗口:
DSADD用户“CN = Abruaba罗德里格斯,DC = CoolDomain,DC =域, DC = com”的-pwd密码
-memberof “CN = gk_students,CN =用户,DC = CoolDomain,DC =域,DC = com的”
这是正确的语法来添加用户使用该名称,如如果我自己调用该行,它就可以工作。但是,如果我删除写主机命令失败说“DSADD失败:‘DC =域’是未知参数
任何意见,在此先感谢
编辑:?我有我的脚本通过一个解决方法工作,但我不认为这是这个脚本可以运行的最佳方式
我改变了最后一行,并添加了两个,而不是写入主机,我写了一个变量,然后然后我简单地调用变量并成功!它的工作原理如下:
$Execute = write-output Dsadd user `"CN=$Name"" DC=$Domain -pwd $User.Password -memberof `"CN=$Member" CN=Users, DC=$Domain"
$Fields="{0} {1} {2} {3} {4} {5} {6} {7}" -f $Execute
Invoke-Expression $Fields
有没有更好的方法来使用PowerShell来完成这项任务?
谢谢,这使得更多的意义。我从来不知道格式运算符存在。 – user3291398
如果您使用'-f'格式化字符串,为什么不使用单引号并避免多余的''''转义?例如。 CN = {0},CN = Users,{1}“''而不是'”“”CN = {0},CN = Users,{1}“”“'。 –