我目前在一个已迁移其 OU 组的组织中工作,以便所有内容都属于名为“用户和工作站”的父文件夹。
这对我来说是个小问题,因为我有一些批处理脚本可以从文本文件中删除用户和计算机——我经常运行这些脚本。
例如,我用来禁用一批机器的当前代码如下
@echo off
CLS
ECHO Now Disabling Machines...
TIMEOUT 2 > nul
Pause
FOR /f %%i in (%~dp0\computernames.txt) do (
dsquery computer -name %%i | dsmod computer -disabled Yes
)
如果我在更改后运行此代码,我会收到以下错误
dsmod failed:'Target object for this command' is missing.
type dsmod /? for help.
但是,如果我在命令提示符中手动键入 dsquery / dsmod 代码行并将“%%i”替换为失败的计算机,则它会成功。
我几乎可以肯定这是由于 OU 文件夹结构中的空格造成的,但不知道如何更改我的脚本以继续工作。
有没有办法改变它?我应该尝试别的吗?我要疯了才想办法解决这个问题!!!
提前致谢,
本
PS我想出了一个似乎可行的解决方案 - 我会保持开放,以防任何人都可以提出更好的方法来做我需要做的事情。请参阅下面的适用于我的代码。看起来我需要添加正确的分隔符和两组双引号才能正确退出......这对我来说没有太大意义......但它确实有效......
@echo off
setlocal disabledelayedexpansion
CLS
ECHO Now Disabling Machines...
ECHO.
Pause
FOR /f "delims= " %%i in (%~dp0\computernames.txt) do (
echo disabling %%i && echo. && dsquery computer -name ""%%i"" | dsmod computer -disabled Yes && echo.
)