Powershell的AD相关的命令灰常好用,豆子今天早上从HR那里拿了一份名单,需要更新所有AD用户的职位和部门信息。这个名单有上千人,肯定不能手动修改,一个简单几行的脚本就可以迅速解决。基本方法是可以通过get-ADuser搜索用户,然后使用 set-ADuser这个命令修改就行了。


名单格式如下: HR的代码,名字,姓,加入日期,职位,部门等等。由于鬼佬习惯结婚之后改名字,所有直接通过displayname 搜索很多人是找不到的。不过SamaccountName一般不会变,公司的命名方式是第一个名字的首字母+最后一个名字( First intial+ Last Name)。


powershell更改用户信息_powershell


如何改成这个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]}
}


这样就能修改了