天天看點

批量根據計算機名稱移動到相應OU中腳步

目的:根據定制化的計算機名,将其定期移動到指定的OU中,友善管理.

先導出目前AD裡的所有計算機:

csvde -d cn=computers,dc=contoso,dc=intra -l cn -r "(objectClass=computer)" -f pclist.csv FOR /F "skip=1 eol=; tokens=2,3* delims=,=" %%a in (pclist.csv) do echo %%a >>pclist2.csv

       上述語句若需要在指令行下單獨執行,請去掉一個百分号.其中根據你AD實際替換DC值.在這個例子裡使用了"CSVDE"導出所有計算機到一個CSV檔案裡,然後用FOR語句篩選有用的資訊重新輸出到另一個檔案.在這裡CSVDE可以用dsquery 指令去執行,功能更強大.

篩選計算機名的有效值

findstr /C C pclist2.csv >>c.csv

findstr /B M pclist2.csv >>m.csv

findstr /B Sales pclist2.csv >>Sales.csv

在這裡根據計算名裡的字段導出幾個清單.

用DSMOVE批量移動計算機到指定的OU.

FOR /F "eol=; tokens=1,2,3* delims= " %%a in (c.csv) do dsmove cn=%%a,cn=computers,dc=contoso,dc=intra -newparent ou=c,ou=company,dc=contoso,dc=intra

FOR /F "eol=; tokens=1,2,3* delims= " %%a in (m.csv) do dsmove cn=%%a,cn=computers,dc=contoso,dc=intra -newparent ou=m,ou=company,dc=contoso,dc=intra

FOR /F "eol=; tokens=1,2,3* delims= " %%a in (Sales.csv) do dsmove cn=%%a,cn=computers,dc=contoso,dc=intra -newparent ou=sales,ou=company,dc=contoso,dc=intra

這裡就是根據從導出來的清單移動到相應的OU.

可以整理成一個bat執行:

csvde -d cn=computers,dc=h,dc=com -l cn -r "(objectClass=computer)" -f pclist.csv

FOR /F "skip=1 eol=; tokens=2,3* delims=,=" %%a in (pclist.csv) do echo %%a >>pclist2.csv

findstr /C CN-A pclist2.csv >>cw.csv

findstr /B CN-L pclist2.csv >>cl.csv

findstr /B US-A pclist2.csv >>uw.csv

findstr /B US-L pclist2.csv >>ul.csv

FOR /F "eol=; tokens=1,2,3* delims= " %%a in (cw.csv) do dsmove cn=%%a,cn=computers,dc=h,dc=com -newparent ou=Workstation,ou=China,ou=company,dc=h,dc=com

FOR /F "eol=; tokens=1,2,3* delims= " %%a in (cl.csv) do dsmove cn=%%a,cn=computers,dc=h,dc=com -newparent ou=Laptop,ou=China,ou=company,dc=h,dc=com

FOR /F "eol=; tokens=1,2,3* delims= " %%a in (uw.csv) do dsmove cn=%%a,cn=computers,dc=h,dc=com -newparent ou=Workstation,ou=US,ou=company,dc=h,dc=com

FOR /F "eol=; tokens=1,2,3* delims= " %%a in (ul.csv) do dsmove cn=%%a,cn=computers,dc=h,dc=com -newparent ou=Laptop,ou=US,ou=company,dc=h,dc=com

if exist *.csv del *.csv

最後的效果是:所有以CN-A開頭的PC都移動到CHINA裡的WORKSTATION裡.CN-L就移動到CHINA裡的LAPTOP.這樣可以有效的分開管理.

用DSQUERY查詢并輸出檔案:

dsquery computer -o rdn cn=computers,dc=h,dc=com >>pclist2.csv 

findstr CN-A pclist2.csv >>cw.csv

findstr CN-L pclist2.csv >>cl.csv

findstr US-A pclist2.csv >>uw.csv

findstr US-L pclist2.csv >>ul.csv

FOR /F "eol=; tokens=1,2,3* delims= " %%a in (cw.csv) do dsmove cn=%%a,cn=computers,dc=h,dc=com -newparent ou=Workstation,ou=China,ou=company,dc=h,dc=com

FOR /F "eol=; tokens=1,2,3* delims= " %%a in (cl.csv) do dsmove cn=%%a,cn=computers,dc=h,dc=com -newparent ou=Laptop,ou=China,ou=company,dc=h,dc=com

FOR /F "eol=; tokens=1,2,3* delims= " %%a in (uw.csv) do dsmove cn=%%a,cn=computers,dc=h,dc=com -newparent ou=Workstation,ou=US,ou=company,dc=h,dc=com

FOR /F "eol=; tokens=1,2,3* delims= " %%a in (ul.csv) do dsmove cn=%%a,cn=computers,dc=h,dc=com -newparent ou=Laptop,ou=US,ou=company,dc=h,dc=com

本文轉自  zyliday   51CTO部落格,原文連結:http://blog.51cto.com/itsoul/1794209

繼續閱讀