Powershell的AD相关的命令灰常好用,豆子今天早上从HR那里拿了一份名单,需要更新所有AD用户的职位和部门信息。这个名单有上千人,肯定不能手动修改,一个简单几行的脚本就可以迅速解决。基本方法是可以通过get-ADuser搜索用户,然后使用 set-ADuser这个命令修改就行了。
名单格式如下: HR的代码,名字,姓,加入日期,职位,部门等等。由于鬼佬习惯结婚之后改名字,所有直接通过displayname 搜索很多人是找不到的。不过SamaccountName一般不会变,公司的命名方式是第一个名字的首字母+最后一个名字( First intial+ Last Name)。
如何改成这个SamaccountName呢,很简单,利用split函数分开重组一下就行了
比如:
$a=get-content 'c:\employee.csv' foreach ($b in $a){ $c=$b.split(",") $init=$c[1][0] $lastname=$c[2] $shortnamae=$init+$lastname }
获得SamaccountName之后,那就很简单了,在foreach循环里面,利用get-ADuser搜索,然后set-ADuser修改就行了。可以写成一行,通过管道传输,也可以分开写。
比如:
$user=get-ADuser $shortname if ($user -eq $null) { $b >> c:/temp/error.csv } else { $user.samaccountname set-aduser $user.samaccountname -replace @{title=$c[4];department-$c[5]} }
这样就能修改了