原文鏈接:http://blog.51cto.com/shubao/1346469
作為域管理員,在日常工作中使用ADUC(AD用戶和計算機)工具在圖形界面中進行賬號管理操作可謂是家常便飯了。然而一個個增加、移動、刪除用戶,這樣操作有時真的夠煩,當管理大批量的賬戶時,重復操作浪費的時間會很多很對。記得在前兩年寫過幾篇關於如何批量創建組織單位OU、AD域用戶賬戶、郵件通訊組以及啟用用戶Exchange郵箱的文章,這些特別適用於在企業組織環境中白手起家新建域控、郵件等服務器的IT環境。
而對於企業組織中具有完善的IT基礎架構的環境,有時也是需要進行大批量的AD用戶操作的,比如AD中基於部門的組織單位OU,當趕上公司組織架構大變動,就需要隨之調整,如果一個個手動操作,動輒幾千個賬戶,對於域管理員來說,那將是個很苦逼的重復勞動。。。當然有人會提到整合HR系統和AD系統,這樣就不需要重復操作,多次維護了。但是就國內來說,企業信息化建設到這種層度的公司屈指可數啊,並且這種HR系統價格不菲!
拿我所在的公司來說,每年都有組織架構的頻繁變動,IT人員除了平時基於HR的信息進行調整外,每年年底還要基於HR信息進行一次徹底的大調整,以滿足日常辦公中Exchange郵件和Lync通訊簿中呈現出准確的信息。在我到公司之前據說每次調整都是好幾個IT人員用花費幾周的時間來共同完成。現在俺當然不能再采用這么土鱉的方法來調整了。。。怎么着咱也是MVP啊,O(∩_∩)O哈哈~
下面言歸正傳吧,來看看如何批量實現移動用戶吧?
開始之前還是先要感謝以下兩位博主,我這篇文章是在他們基礎之上完成的
《一個腳本解決AD用戶批量操作問題》
http://lqlaps169.blog.51cto.com/855319/384176
《批量修改AD賬戶與屬性》
http://blog.csdn.net/xuhuojun/article/details/6795648
下面開始具體操作:
1、HR信息獲取
前面我們提到,我們的AD架構調整是基於HR的組織架構及人事信息的,所以首先我們會從HR處拿到一張Excel表格,類似下圖,包含姓名、公司、部門、郵箱等信息。
其中主要用到一下兩項信息:
部門信息 用於我們AD中組織單位OU的划分
郵箱信息 用於和我們AD中的現有用戶信息進行匹配
注:之所以不使用姓名是因為涉及到重名,一般來說AD中的姓名和HR的姓名不具有唯一性。
2、AD中用戶信息導出
AD中現有用戶信息的導出我借鑒的是《批量修改AD賬戶與屬性》一文中的方式,再次感謝作者!http://blog.csdn.net/xuhuojun/article/details/6795648
這是一個vbs腳本,執行后會導出ad中用戶的N多屬性值,這里我們用不着這么多的屬性值,所以對腳本稍加修改,只需導出顯示名、郵箱、sAMAccount、DN(distinguishedName)等信息。
執行語句:
cscript C:\exportUserProfile.vbs
注:在64位的Windows Server 2008 R2環境下,需要以管理員權限打開cmd,並進入C:\Windows\SysWOW64\ 目錄;命令執行計算機上還需要安裝Excel 應用程序;
腳本執行完成后會輸出結果到c:\temp\MyExport.xls
3、信息比對及匹配
接下來要做的就是將HR的Excel表格和我們導出的Excel表格(MyExport.xls)信息進行比對及匹配。
我們能夠看到HR的Excel表格和導出的Excel表格具有相同的mail郵箱這一列,下面我們要使用Excel強大的VLOOKUP函數,用HR的Excel表格中mail信息去我們導出的Excel表格(MyExport.xls)中查詢出對應的DN(distinguishedName)值,並填充到HR的Excel表格中。
DN(distinguishedName)值就是我們后面進行批量操作的關鍵
關於VLOOKUP函數可以參考下面鏈接,或者直接Google或者百度一下
http://office.microsoft.com/zh-cn/excel-help/vlookup-HP005209335.aspx
VLOOKUP比對匹配完成后的結果如下:
注:
“#N/A” 表示兩張Excel表格中的數據沒有相同的,一般是HR提供的郵箱錯誤或者和我們AD中的郵箱不一致導致的,這種一般我們可以根據其他信息手動查詢出正確的DN值並補全。
局部放大截圖:
完成后復制表格DN(distinguishedName)值列,並保存為txt文本文件。這里我們保存至D:\user.txt中。
到這里大家應該看明白了,查詢到的DN(distinguishedName)值其實就是AD用戶現在所在的組織單位OU信息。
4、執行批量移動OU
這里我借鑒的是《一個腳本解決AD用戶批量操作問題》一文中的方式,再次感謝作者!
http://lqlaps169.blog.51cto.com/855319/384176
執行語句:
for /f %i in (d:\user.txt) do dsmove %i -newparent ou=xxx,ou=xxx,dc=xxx,dc=com >>d:\log.txt
for的作用就是從user.txt中獲取目標信息
Dsmove –newparent 指定對象應移動到的新位置的 DN值
>>d:\log.txt 將命令執行結果輸出到d:\log.txt,方便查詢命令執行結果及排錯
命令執行結果:
查看輸出log文件:
ADUC中查看被移動的用戶:
這樣我們就完成了AD用戶的批量移動OU操作。在這里提醒大家,這種操作畢竟涉及線上生產環境,所以盡量按照部門分批次移動操作,並且做好在非工作時間進行。
其實用戶組織單位OU的調整只是第一步,接下來還需要進行部門通訊組及成員調整,不過這個完全可以由郵箱地址直接批量添加,簡單方便很多。
另外調整OU后,AD用戶屬性(如:公司、部門、經理等等)的調整也可以按照文章《批量修改AD賬戶與屬性》的方法來批量操作完成。這里就不在重復了