根据员工编号设置标题

时间:2018-07-30 13:53:31

标签: arrays powershell import-csv

我编写了一个脚本,该脚本要读取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

1 个答案:

答案 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)"}
}