一個指令碼解決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 指令碼 \r 問題解決指令碼
- ExcelWeb指令碼助手,自定義指令碼,批量操作Excel與網頁ExcelWeb指令碼網頁
- AD 批量匯入使用者(利用 for……do……dsadd user 批量建使用者)
- AD18無法模擬問題的解決
- 通過shell指令碼 批量新增使用者指令碼
- 解決 Python 指令碼無法生成結果的問題Python指令碼
- 一個“指令碼執行夯死”問題的分析指令碼
- 通過shell指令碼批量操作mysql資料庫指令碼MySql資料庫
- 建立批次AD域使用者的指令碼可以使用 PowerShell 來實現。以下是一個簡單的示例指令碼,用於批次建立使用者:指令碼
- ORACLE問題處理十個指令碼Oracle指令碼
- 解決github中一個新手著名問題Github
- AD9中元件無法顯示的問題解決元件
- 解決“阻塞效應”-解決指令碼檔案下載阻塞網頁渲染的問題指令碼網頁
- sqoop指令碼批量生成OOP指令碼
- 記錄一個 gitlab 登入問題解決Gitlab
- 一個案例,教你巧用DMAIC解決“大問題”!AI
- 解決中文亂碼問題
- Git解決pull操作不成功問題Git
- hadoop_批量命令指令碼&同步檔案指令碼Hadoop指令碼
- 一行程式碼解決求重問題行程
- 教你使用一套程式碼解決出海問題
- 一個關於JS解決陣列相乘問題JS陣列
- OkHttp框架的一個Http500問題解決HTTP框架
- springmvc 解決中文亂碼問題SpringMVC
- MySql中文亂碼問題解決MySql
- Jmeter 解決中文亂碼問題JMeter
- Linux下批量ping某個網段ip的指令碼Linux指令碼
- 解決SqlServer執行指令碼,檔案過大,記憶體溢位問題SQLServer指令碼記憶體溢位
- 一道指令快速解決MAC不能預覽WebP格式圖片問題MacWeb
- AWS AutoScaling的一個ScaleDown策略問題以及解決方法
- 用Python解決一個等差數列的求和問題Python
- 解決 requests 庫 URL 編碼問題
- 解決Kali Linux 2020.1亂碼問題Linux
- TongWeb下亂碼問題解決思路Web
- java中亂碼問題解決方法Java
- 徹底解決Python編碼問題Python
- ts程式碼提示很慢問題解決
- js解決url中文亂碼問題JS
- cat 輸出亂碼問題解決