Chinaunix首页 | 论坛 | 博客
  • 博客访问: 527311
  • 博文数量: 88
  • 博客积分: 2256
  • 博客等级: 大尉
  • 技术积分: 921
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-08 23:20
个人简介

积硅步,行千里

文章分类

全部博文(88)

文章存档

2019年(5)

2018年(1)

2016年(15)

2015年(23)

2013年(3)

2012年(6)

2011年(3)

2010年(22)

2009年(10)

我的朋友

分类: 系统运维

2016-08-10 14:59:47

         上个月有个项目中碰到这样一个需求,讲述步骤前先描述下客户的实际情况:因安全考虑需要,域内的计算机之前都已经设置了指定登陆到的计算机,目前的项目是从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就好了,和群友讨论说可能是输入法全半角的问题,我反正是看了没啥区别,眼力好的,对比下看看。[注:上面的是不成功的,下面的是执行成功的]

阅读(3482) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

梦是软实力的开始2018-06-12 11:35:45

我现在也在配置用户和计算机一一对应起来,看您的博客我还没有完成,麻烦请你指教一下,麻烦您家一下qq:861249503 向您请教一些问题