我正在尝试编写一个首先从CSV文件导入的powershell脚本。 CSV文件将包含AD员工编号属性以及业务单位属性。
脚本需要根据CSV中的员工编号属性查找AD用户,然后更新CSV文件中包含的该用户的业务单位属性。 CSV将如下所示:
0,1
8022651,Sales & Marketing
到目前为止,我已经能够使用以下方法查找员工编号:
$EmployeeNumber='8022651'
get-ADUser -Filter {EmployeeNumber -eq $EmployeeNumber}
我知道我可以使用Import-CSV,但不知道如何将它们拼凑在一起。任何帮助将不胜感激。
答案 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
}