更新活动目录中的人员组织架构

最近公司希望把活动目录里面的人员组织架构关系完善起来, 为其他系统提供支撑, 于是我用PowerShell对此进行了实现. 首先说下大致思路, 从人事部门处获得人员信息列表, 然后通过构建哈希表生成"显示名"与"LanID"之间的对应关系, 最后将数据导入AD.

由于此脚本涉及到哈希表, 所以我先贴几段代码回顾一下:

$ht = @{"张三"="zhang_san";"李四"="li_si"}
$ht.张三
<# 输出: zhang_san #>
$ht["张三","李四"]
<# 输出: zhang_san
li_si #>

回到正题, 以下是人事部门提供的表格:

LanID,显示名,拼音姓,拼音名,员工号,公司邮箱,公司名称,手机号码,公司电话,部门名称,岗位,地区,直属领导,状态
Chen_Yi,陈一,Chen,Yi,VB0001,abc@xyz.cn,信息科技,13912345678,NA,IT技术运维部,运维工程师,HZT,郑六,在职
Guo_Er,郭二,Guo,Erda,VB0002,abc@xyz.cn,信息科技,13912345679,NA,IT技术运维部,运维工程师,HZT,郑六,在职
Li_San,李三,Li,San,VB0003,abc@xyz.cn,信息科技,13912345680,NA,IT技术运维部,运维工程师,HZT,郑六,在职
Wang_Si,汪四,Wang,Si,VB0004,abc@xyz.cn,信息科技,13912345681,NA,IT技术运维部,运维工程师,HZT,郑六,在职
Xi_Wu,奚五,Xi,Wu,VB0005,abc@xyz.cn,信息科技,13912345682,NA,IT技术运维部,运维工程师,HZT,郑六,在职
Zheng_Liu,郑六,Zheng,Liu,VB0006,abc@xyz.cn,信息科技,13912345683,NA,IT技术运维部,总监,HZT,郑六,在职

以下是程序:

# LanID,显示名,拼音姓,拼音名,员工号,公司邮箱,公司名称,手机号码,公司电话,部门名称,岗位,地区,直属领导,状态
$ht = Import-Csv -Path "C:\script\user details template1.csv" -Encoding Default | foreach {
    @{$_.显示名 = $_.LanID}
}
Import-Csv -Path "C:\script\111 user details template - 副本.csv" -Encoding Default | foreach {
    $lanid = $_.LanID
# 由于源数据可能由于人为失误导致某些数据是空值, 所以这里做了一个判断, 遇到空值就填入NA
if($_.员工号 -eq '') {$empno = 'NA'} else{$empno = $_.员工号} if($_.公司邮箱 -eq '') {$mail = 'NA'} else{$mail = $_.公司邮箱} if($_.公司名称 -eq '') {$company = 'NA'} else{$company = $_.公司名称} if($_.手机号码 -eq '') {$mobile = 'NA'} else{$mobile = $_.手机号码} if($_.公司电话 -eq '') {$officenumber = 'NA'} else{$officenumber = $_.公司电话} if($_.部门名称 -eq '') {$department = 'NA'} else{$department = $_.部门名称} if($_.岗位 -eq '') {$role = 'NA'} else{$role = $_.岗位} if($_.地区 -eq '') {$location = 'NA'} else{$location = $_.地区} if($_.状态 -eq '') {$status = 'NA'} else{$status = $_.状态} Set-ADUser -Identity $lanid -PostalCode $empno -EmailAddress $mail -Company $company -MobilePhone $mobile -OfficePhone $officenumber -Department $department -Title $role -Office $location -Description $status -Manager $ht.($_.直属领导) }

 

 

2016-4-22更新:

在完善用户信息的时候发现, Set-ADUser各参数的值不能为空, 否则报错, 报错信息如下:

Set-ADUser : replace
所在位置 C:\script\import date to AD.ps1:7 字符: 5
+ Set-ADUser -Identity $_.LanID `
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (ai_mili:ADUser) [Set-ADUser],ADInvalidOperationException
+ FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.SetADUser

posted @ 2016-04-13 10:57  dongdonggeorge  阅读(814)  评论(0编辑  收藏  举报