目的:根據定制化的計算機名,将其定期移動到指定的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
版權聲明:原創作品,如需轉載,請注明出處。否則将追究法律責任
本文轉自 Juck_Zhang 51CTO部落格,原文連結:http://blog.51cto.com/itsoul/1794209