上个月有个项目中碰到这样一个需求,讲述步骤前先描述下客户的实际情况:因安全考虑需要,域内的计算机之前都已经设置了指定登陆到的计算机,目前的项目是从Lotus邮件系统迁移到Exchange 2010,Lotus工作流迁移到泛微OA,域内账户输入账号和密码后不能登陆到Exchange系统。原因就是设置了账户的登陆到计算机属性,因为Exchange是新上的系统,没在指定范围内,所以需要添加Exchange服务器CAS01,CAS02,Mail,Mailbox01。添加Mailbox01是因为公共文件夹数据库在Mailbox01上,winxp客户端需要连接到Mailbox01下载和更新OAB。
和用户确定范围和工作内容后,就开始着手做了,用户说他有之前保存的批量导入脚本,我说好啊,你来处理吧,结果一个上午过去了,到中午的时候,还没弄完,我一看,脚本比较复杂,针对OU要修改,有些属性要调整,一个小时大概能处理500个,照这个进度,下午可能也处理不完。
分析后思路来了,先从AD导出现有的Logonworkstation属性到Excel,在Excel里面批量修改下Logonworkstation属性,在导入到AD就可以了,这样高效而且故障率低。
下面开始讲述两种实现方法的详细实施步骤。
方法一、Powershell+Excel
步骤1、Powershell批量导出AD的相关属性。如果是系统是2008,则需要使用 Import-Moudle ActiveDirectory 倒入AD模块先,但在2012中会自动导入。
PS C:\Users\Administrator> Get-ADUser -Filter * -Properties * | Select-Object name,samaccountname,userprincipalname,logo
nw*|Export-Csv c:\userinfo.csv -Encoding UTF8 -NoTypeInformation
步骤2、导出后,删除一些系统自带账号,如下图。
步骤3、下面我们增加五列内容,一列是从Logonworkstation剪切过来的,一些是cas01,一列是cas02,一列是mail,一列是mailbox01。用于后面的步骤"列合并"。为什么Logonworkstation列留空呢?看后面步骤就知道了。
步骤4、我们使用Excel字符合并函数,A&B&C&D&E,如下图,得到我们想要的xp002,cas01,cas02,mail,mailbox01这个效果,并拉至填充至最末尾一行。
步骤5、编辑完成后,注意用记事本打开该文件,然后选择“UTF-8”编码来保存该CSV文件,以免出现导入后出现中文字段乱码.
步骤6、将编辑后的CSV文件复制到C:\ ,执行导入命令
PS C:\Users\Administrator> Import-Csv -Path c:\userinfo.csv | foreach {Set-ADUser -Identity $_.name -LogonWorkstations $_.logonworkstations}
[注:也可以使用参数-encoding default避免中文乱码
Import-Csv -Path c:\userinfo.csv -encoding default | foreach {Set-ADUser -Identity $_.name -LogonWorkstations $_.logonworkstations}
]
步骤7、查看我们导入后的效果,对比下Excel表,看是否达到了我们的要求。
步骤8、操作后整个导入的时间不到半小时。达到我们的实际效果,步骤完成。
方法二、Powershell,不使用Excel
输入如下命令:
步骤1、PS C:\Users\Administrator> Get-ADUser -Filter * -Properties * | where {$_.logonw
orkstations -ne $null} | Select-Object name,logonworkstations | foreach {Set-ADUser -Identity $_.name -LogonWorkstations ($_.logonworkstations+",cas01,cas02,mail,mailbox01")}
步骤2、查看我们导入后的效果,达到了我们的要求。
----------------------------------------------------------------------------------------------------
这个地方折腾了好久,一直执行不成功,后面又在输入了一遍Powershell就好了,和群友讨论说可能是输入法全半角的问题,我反正是看了没啥区别,眼力好的,对比下看看。[注:上面的是不成功的,下面的是执行成功的]