Powershell命令用于查找员工编号和更新业务单位

时间:2014-04-16 00:48:01

标签: powershell active-directory

我正在尝试编写一个首先从CSV文件导入的powershell脚本。 CSV文件将包含AD员工编号属性以及业务单位属性。

脚本需要根据CSV中的员工编号属性查找AD用户,然后更新CSV文件中包含的该用户的业务单位属性。 CSV将如下所示:

0,1
8022651,Sales & Marketing

到目前为止,我已经能够使用以下方法查找员工编号:

$EmployeeNumber='8022651'
get-ADUser -Filter {EmployeeNumber -eq $EmployeeNumber}

我知道我可以使用Import-CSV,但不知道如何将它们拼凑在一起。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

首先我们需要像这样获取csv的内容

Import-Csv "path to your csv"

如果业务单位位于Office字段中,我们可以使用set-aduser更新

% { set-aduser $_.0 -Office $_.1 }

%foreach-object的缩写,其实质上是一次抓取每个用户并更改AD中的Office字段

如果我们将$_放入管道中,它将获得先前传递的信息,因此在这种情况下,我们从CSV中抓取“0”和“1”标题

用户Office更改后,很高兴看到每次更改,以便我们可以write-host这样使用

write-host "Changed the office of $($_.0) to $($_.1)

我们再次使用$_.0$_.1来获取Import-Csv的标题,但因为write-host基于字符串,我们必须将变量放入{{1}让他们正确显示。

放在一起是:

$( )

这将

Import-Csv "path to your csv" | % {set-ADUser $_.0 -Office $_.1; write-host "Changed the office of $($_.0) to $($_.1)}

我希望这是有道理的,如果不在下面的评论中告诉我。

编辑:

Grab the information from your CSV
->then change info in Active Directory for each person based on the 0 and 1 headers
-->then write on the screen who it changed and what to

编辑2:

$csv = Import-Csv "path to your csv"
foreach($usr in $csv) {
    get-ADUser -Filter {EmployeeNumber -eq $usr.0} | set-ADUser $_ -Office $usr.1
}