博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Powershell管理系列(六)批量修改AD账户登陆到的计算机
阅读量:6788 次
发布时间:2019-06-26

本文共 2086 字,大约阅读时间需要 6 分钟。

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

 

转载地址:http://bligo.baihongyu.com/

你可能感兴趣的文章
Vmware虚拟机三种网络模式详解
查看>>
常用Shell脚本命令(备忘)
查看>>
Python中的__init__,__call__
查看>>
玩转Kafka的生产者
查看>>
解决android.permission.WRITE_APN_SETTINGS
查看>>
Ruby on Rails: UUID as your ActiveRecord primary key
查看>>
Bean property属性说明
查看>>
微软工程师认为 Mozilla 也应该拥抱 Chromium
查看>>
去年出货的工业机器人,超过1/3都跑来了中国
查看>>
Windows死机的话,可能的一些猫病
查看>>
作为架构师,你必需要搞清楚的概念:POJO、PO、DTO、DAO、BO、VO
查看>>
golang-web框架revel一个表单提交的总结
查看>>
PHP 根据IP获取地理位置
查看>>
如何设置同一单据的单据头字段各行合并显示吗?
查看>>
HAProxy负载均衡代理
查看>>
Velocity入门指南
查看>>
LNMP架构搭建论坛(三)
查看>>
有关jdk和oracle和eclipse问题
查看>>
为什么 Redis 单线程能支撑高并发?
查看>>
程序员都会的 35 个 jQuery 小技巧
查看>>