我编写了一个脚本,该脚本要读取CSV文件并分级员工ID,并根据员工ID设置用户标题。我在每次通过CSV每次循环运行所有samaccount名称的脚本中遇到麻烦。
initialize!'
2018-07-30T13:42:29.385070+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.3.0/gems/railties-3.2.21/lib/rails/railtie/configurable.rb:30:in
这是CSV文件的外观
<top (required)>'
2018-07-30T13:42:29.385077+00:00 app[web.1]: from /app/config.ru:3:in
答案 0 :(得分:1)
基于您的示例,您似乎想知道如何有效地执行If语句。 TheIncorrigible1在注释中指出,在foreach中调用Get-ADUser效率极低。您可以一次调用Get-AdUser,然后将输出通过管道传递到“ If”,该雇员针对EmployeeID属性查找包含。
$Titles = Import-CSV "C:\T2\SetUserAttributes\EIDTitle.csv"
Get-ADUser -Filter * -Properties employeeid | ?{
$Titles.EmployeeID.Contains($_.EmployeeId)
}
但是,当我阅读全文后,我发现您想更改AD中的标题以与CSV文件中的标题相对应。如果我们要转到foreach-object语句,则将D-User放入一个名为$ Users的变量中,然后对CSV变量执行where语句,而不是Diffrence。届时,我们将使用Set-ADUser设置标题并将信息输出到控制台。
$Titles = Import-CSV "C:\T2\SetUserAttributes\EIDTitle.csv"
Get-ADUser -Filter * -Properties employeeid | %{
$User = $_
$Titles | Where{$_.EmployeeID -eq $USer.EmployeeID} | Set-ADUser $User -Title $_.Title | %{Write-Output "$($User.SamAccountName) : $($_.Title)"}
}