• 欢迎访问小弟新的博客,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站 QQ交流群群
  • 本博客坚持更新微软UC产品的相关信息与项目上遇到的问题,欢迎大家关注并提出相关改进意见。
  • 本博客不定期更新博文,同时非常欢迎各位老铁投稿,或者加入QQ群进行相关交流 QQ交流群群

批量根据计算机名称移动到相应OU中脚步

Windows Server 张超 10个月前 (05-27) 1908次浏览 已收录 0个评论 扫描二维码

目的:根据定制化的计算机名,将其定期移动到指定的 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

if exist *.csv del *.csv


张超 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明批量根据计算机名称移动到相应 OU 中脚步
广告
喜欢 (1)
[Juck.Zhang]
分享 (0)
张超
关于作者:
版主目前就职国资委旗下子公司,微软MVP、高级微软实施工程师、微软技术爱好者、钻研者;具有多年丰富的项目实践经验。在公司主要负责微软活动目录、Exchange、Skyper for Biusees等产品的架构设计、实施、问题处理等工作。
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
%d 博主赞过: