私は現在、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私はうまくいくと思われる解決策を思いつきました.誰かが私がしなければならないことをするためのより良い方法を提案できるように、私はこれを開いたままにします. 私のために働くコードについては、以下を参照してください。正しく終了するには、正しい delims と 2 組の二重引用符を追加する必要があったようです....私にはあまり意味がありません...しかし、うまくいきます...
@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.
)