一個指令碼解決AD使用者批量操作問題
前幾天在群中51CTO的HZ022朋友提出了個關於AD使用者批量更新OU的問題,大家都清楚在AD圖形介面中我們只能一個個增加、移動、刪除使用者,這樣操作有時真的夠煩的,在大批量操作時浪費的時間也很多,有沒有更好的辦法解決我們經常面臨的問題呢?其實我們可以使用簡單的指令碼來實現所需的功能,在這裡我把它延伸為下面幾個問題並進行解答。後面編寫的一個指令碼同樣可以完成下面的操作,大家可以下載下了測試一下哦,如果指令碼在測試時你有更好的方法或發現有錯誤的地方可得知會一下小弟哦。
1.假設一個企業(DC為www.gr.com,以下相同)中有1000個使用者,其中包含了user字元的有100個使用者,它們分部在不同的OU中,如:IT,PM,MRP,ACC等等,現在我們新建了一個OU名稱為Sales,現在如何將這100個使用者從其它的OU中移至Sales這個OU?
解答:
- dsquery user –name *user* >>c:\user.txt
- for /f %i in (c:\user.txt) do dsmove %i -newparent ou=Sales,dc=www,dc=gr,dc=com
2.假設一個企業中有1000個使用者,其中有100個使用者屬於Sales組,它們分部在不同的OU中,如:IT,PM,MRP,ACC等等,現在我們新建了一個OU名稱為Sales,現在如何屬於Sales組的這些使用者從其它的OU中移至Sales這個OU?
解答:
- dsget group "cn=Sales,cn=users,dc=www,dc=gr,dc=com" -members >>c:\user.txt
- for /f %i in (c:\user.txt) do dsmove %i -newparent ou=Sales,dc=www,dc=gr,dc=com
3.假設一個企業新進100個職員,他們分別分配在IT,PM,MRP,ACC,Sales部門,現在如何批量建立這些使用者並設定他們所在的組和OU?
解答:
- 首先建立一個c:\userlist.csv,格式如下:
henGong,ACC,p@ssw0rd
ChengYuanZhi,IT,p@ssw0rd
ChengPu,MRP,p@ssw0rd - FOR /F "eol=; tokens=1,2,3* delims=, " %a in (c:\userlist.csv) do dsadd user "cn=%a,ou=%b,dc=www,dc=gr,dc=com" -pwd %c -samid %a -upn %a@www.gr.com
4.時間長了,由於職員離職等原因,在AD中被禁用的使用者越來越多,而且他們分部在不同的OU中,如何將這些被禁用的使用者批量的刪除掉呢?
解答:
- dsquery user -disabled >>c:\user.txt
- for /f %i in (c:\user.txt) do dsrm -noprompt -c "%i"
總結上面幾個問題,我編寫了一個指令碼,運用它我們可以簡單的來實現以上功能。
指令碼如下,大家可以拷貝到記事本中並儲存為cmd格式,你也可以下載我上傳的檔案分別將其字尾改為cmd和csv,其中此指令碼中我所用的測試DC為www.gr.com,請試驗時將指令碼中相應部分更改為你自己的DC。
@echo off
cls
cd\
c:
echo.
echo -------------------------------------------
echo 此指令碼用於更改AD使用者所在的OU及批量建立使用者.
echo -------------------------------------------
echo.
echo 【1】批量更改使用者至新OU
echo 【2】將同一組使用者更改至新OU
echo 【3】批量建立使用者
echo 【4】批量刪除被禁用使用者
echo -------------------------------------------
echo.
set /p select=請在選單中選擇:
if "%select%"=="1" set /p username=請輸入所需查詢使用者(可使用匹配符): &goto A
if "%select%"=="2" set /p groupname=請輸入所需查詢組名: &goto B
if "%select%"=="3" goto D
if "%select%"=="4" goto E
:A
dsquery user -name %username% >>user.txt
echo.
echo ---------------------------
echo 已成功匯出所匹配的使用者資訊。
echo ---------------------------
goto C
:B
dsget group "cn=%groupname%,cn=users,dc=www,dc=gr,dc=com" -members >>user.txt
echo.
echo ----------------------------------
echo 已成功匯出%groupname%組的使用者資訊。
echo ----------------------------------
goto C
:C
echo.
set /p ouname=請輸入使用者所需更新到的OU:
for /f %%i in (user.txt) do dsmove %%i -newparent ou=%ouname%,dc=www,dc=gr,dc=com
echo.
echo ----------------------------------------
echo 已成功更新使用者到 %ouname% OU中,謝謝使用。
echo ----------------------------------------
echo.
goto Z
:D
set /p userpath=請輸入使用者列表檔案路徑(c:\userlist.csv):
FOR /F "eol=; tokens=1,2,3* delims=, " %%a in (%userpath%) do dsadd user "cn=%%a,ou=%%b,dc=www,dc=gr,dc=com" -pwd %%c -samid %%a -upn %%a@www.gr.com
echo.
echo ----------------------------------------------------
echo 已成功建立%userpath%列表中的使用者,謝謝使用。
echo ----------------------------------------------------
echo.
goto Z
:E
set /p select=請確定刪除被禁用使用者嗎?(y/n):
if "%select%"=="y" goto F
if "%select%"=="n" goto Z
:F
dsquery user -disabled >>user.txt
for /f %%i in (user.txt) do dsrm -noprompt -c "%%i"
echo.
echo -------------------------------
echo 已成功刪除被禁用使用者,謝謝使用。
echo -------------------------------
echo.
:Z
del user.txt
pause
echo on
以上指令碼歡迎大家指正,謝謝。
相關文章
- shell指令碼批量操作使用者指令碼
- 執行 shell 指令碼 \r 問題解決指令碼
- shell指令碼中文註釋亂碼問題(解決)指令碼
- Unix shell解決實際問題指令碼(1)指令碼
- Unix shell解決實際問題指令碼(2)指令碼
- Unix shell解決實際問題指令碼(3)指令碼
- hadoop_批量命令指令碼&同步檔案指令碼Hadoop指令碼
- Linux批量建立使用者指令碼Linux指令碼
- linux批量新增使用者指令碼Linux指令碼
- CQRS批量操作的效能問題
- iOS——寫一個快速定位問題的指令碼iOS指令碼
- ExcelWeb指令碼助手,自定義指令碼,批量操作Excel與網頁ExcelWeb指令碼網頁
- LoadRunner錄製指令碼亂碼問題指令碼
- 一個lua問題解決過程
- 一個小問題的解決方案
- 解決了一個PC的問題
- 批量註冊事件處理函式索引總是最後一個問題解決事件函式索引
- crontab不執行mysql的指令碼問題的解決!MySql指令碼
- 通過shell指令碼 批量新增使用者指令碼
- 一個解決VC++程式國際化的類,解決亂碼問題C++
- 一個“指令碼執行夯死”問題的分析指令碼
- shell指令碼建立使用者及批量建立使用者指令碼
- Android Gradle指令碼解決美團多渠道打包再加固渠道資訊丟失問題AndroidGradle指令碼
- IFrame安全問題解決辦法(跨框架指令碼(XFS)漏洞)框架指令碼
- 解決 Python 指令碼無法生成結果的問題Python指令碼
- chrome appcache一個問題的解決ChromeAPPPCA
- 終於,解決了一個大問題
- 通過shell指令碼批量操作mysql資料庫指令碼MySql資料庫
- ORACLE問題處理十個指令碼Oracle指令碼
- 刪除一個使用者遇到的問題和解決
- jQuery 操作 XML(解決大小寫問題)jQueryXML
- loadrunner常見問題解決
- 遊標指令碼效能問題解決與分析 (4) - Cursor Performance Analysis指令碼ORM
- 遊標指令碼效能問題解決與分析 (2) - Cursor Performance Analysis指令碼ORM
- 一個案例,教你巧用DMAIC解決“大問題”!AI
- 一個關於/root/.gvfs的問題解決?
- 解決“阻塞效應”-解決指令碼檔案下載阻塞網頁渲染的問題指令碼網頁
- 解決中文亂碼問題