我有一个包含大约 2500 台计算机的 OU。我需要将其中 580 台移动到另一个 OU。有没有办法使用批处理文件执行此操作?我有一个包含计算机名称(不是 FQDN)的文本文件。
答案1
FOR /f %%i in (C:\path\to\textfile.txt) do (
dsquery computer -name %%i | dsmove -newparent OU=newOU,DC=domain,DC=com
)
这应该可以帮你解决这个问题。
编辑:我已经有一段时间没用过 dsmove 了 :) 它需要你正在移动的对象的 DN,所以我在管道前面添加了 dsquery 以从列表中获取 DN,然后将其通过管道传输到 dsmove。现在对于只有 NetBIOS 名称的列表,这应该可以正常工作了。
答案2
Nixphoe 的回答中有一个小错误—— to
vsdo
和一个缺失do
FOR /f %%a in (file.txt) do dsquery computer -name %%a >> fqdnfile.txt
FOR /f %%b in (fqdnfile.txt) do dsmove %%b -newparent OU=newOU,DC=domain,DC=local
答案3
假设您的计算机名称保存在一个文本文件中,每行一个,您可以运行以下命令来导出它们的 fqdn
FOR /f %%a in (file.txt) DO dsquery computer -name %%a >> fqdnfile.txt
然后运行以下命令来移动它们。请先使用 dsmove 中的 echo 命令进行测试
FOR /f %%b in (fqdnfile.txt) DO dsmove %%b -newparent OU=newOU,DC=domain,DC=local
测试一下。如果不行的话请告诉我。
答案4
对于新管理员来说,一步一步来:获取 file.txt,其中每行列出一个计算机名称。
PC-001
PC-002
PC-003
打开 CMD,确保您的行指示与您的 file.txt 位于同一位置,然后粘贴下面的行
FOR /f %a in (file.txt) DO dsquery computer -name %a >> fqdnfile.txt
这将在与 file.txt 相同的位置创建一个文件 fqdnfile.txt
这将使用可区分名称(每行一个)解析 fqdnfile.txt
注意:对于 BAT 文件,应使用双 %%,对于 CMD,应使用单 %
然后运行下面的行。
FOR /f %b in (fqdnfile.txt) DO dsmove %b -newparent "OU=COMPUTERS,OU=My Bus,DC=Domain,DC=com"
注意:如果名称中有空格,则应将区别名称括在“”中,例如 My Bus
运行下面的代码来检查是否所有东西都已正确移动
FOR /f %a in (file.txt) DO dsquery computer -name %a >> location.txt