私はこの地球上で最も知的な人間の 1 人のように見えますが、スクリプトやプログラミングは得意ではありません。
私の基本的な現在の設定は次のとおりです。
- Windows 2003 はまもなく 2008 R2 AD スキーマになります
- XP SP3 ワークステーションは、まもなく Windows 7 になります (1 年か 2 年後)。
これは、この投稿で詳しく説明されているドメイン参加手順を完全に自動化しようとしている画像です。
GhostCast サーバーまたは GSS バージョン 2.5 の Ghost コンソールを使用してイメージを SysPrep した後、いくつかのバッチ スクリプトといくつかの vbs ファイルを使用して実行します。基本的に、WSNAME はテキスト ファイルの MAC アドレスを介してコンピュータの名前を変更し、再起動します。
コンピューターの名前が変更された後、プログラムはその SQL DB インスタンスを更新する必要があり、その後コンピューターを再起動する必要があります。
この再起動後、このスクリプトで次のすべての自動化を実行したいと思います。
netdom を使用したバッチ スクリプトをお勧めします。
- 文字列または適切なものを介してコンピュータ名を照会します
- コンピューター名が文字列と一致する場合は、このコンピューターをこのドメインと OU に参加させてから再起動し、スクリプトを終了するか、
- コンピューター名が一致しない場合は、次のステートメントに移動して一致を確認し、このコンピューターをこのドメインと OU に参加させてから再起動し、スクリプトを終了するか、
- 一致する文字列が見つからない場合は、ステートメントを再帰してコンピューターをデフォルトの OU に参加させ、再起動してスクリプトを終了する必要があります
基本的に、すべてのコンピューターは指定された OU の下のドメインに参加します。
罪のない人を守るために大切なものが変わった!
この試みはいくつかの Web サイトからプールされましたが、主に環境変数に部分文字列が含まれているかどうかを調べる. これが vbs やその他のプログラムを使用してより適切に実行できる場合は、ファイルを提供してください。
また、バッチ スクリプトとして実行する場合、1 つのパーセント記号 (%) を 2 つのパーセント記号 (%%) にする必要があることも理解しています。
このことを同様に機能させるために、この試みで他に約4つのファイルの反復があります。だから私は過去数週間無駄に努力してきました。
findstr
主な問題は、コマンドに基づいてコンピューター名を照会するための正しい構文を取得することです。ステートメントを操作して、コマンド ラインを介して手動で機能させることはできますが、1 つのバッチ スクリプトとしてではありません。
さらに調査した結果、 Set コマンドを使用して検索文字列の変数を設定することも妥当である可能性があるようです。これらのコンピューターの一部は同じ OU に属しているため、適切なクエリ文字列が考慮されている限り、これらのステートメントのいくつかを修正または省略できます。
受け取って修正するか、完全に破棄してください。完璧に機能するものが欲しいだけです。どんな助けでも大歓迎です。
このスクリプトは手動で機能しますが、明らかに対話型のみです。
::netdom join %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=Secret Stations,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT
echo.%computername%|findstr /B /I /C:"12" >nul 2>&1 && goto move_to_XPOU || goto move_to_secretOU
echo.%computername%|findstr /B /I /C:"745" >nul 2>&1 && goto move_to_secretOU || goto move_to_85OU
echo.%computername%|findstr /B /I /C:"85-712" >nul 2>&1 && goto move_to_85OU || goto move_to_859OU
echo.%computername%|findstr /B /I /C:"85-9" >nul 2>&1 && goto move_to_859OU || goto move_to_ctdOU
echo.%computername%|findstr /B /I /C:"CTD" >nul 2>&1 && goto move_to_ctdOU || goto move_to_coajOU
echo.%computername%|findstr /B /I /C:"COAJ" >nul 2>&1 && goto move_to_coajOU || goto move_to_65OU
echo.%computername%|findstr /B /I /C:"65" >nul 2>&1 && goto move_to_65OU || goto move_to_16
echo.%computername%|findstr /B /I /C:"16" >nul 2>&1 && goto move_to_16 || goto move_to_104OU
echo.%computername%|findstr /B /I /C:"104" >nul 2>&1 && goto move_to_104OU || goto move_to_secretOU
echo.%computername%|findstr /B /I /C:"Sec" >nul 2>&1 && goto move_to_secretOU || goto move_to_scscOU
echo.%computername%|findstr /B /I /C:"SCSC" >nul 2>&1 && goto move_to_scscOU || goto move_to_defaultOU
echo.%computername%|findstr /B /I /C:"740" >nul 2>&1 && goto move_to_defaultOU || goto end
::If name does not match any strings, place computer in default container.
echo.%computername%|findstr /B /I /C:"" >nul 2>&1 && goto move_to_default_OU || goto end
:move_to_XPOU
echo.%computername%|findstr /B /I /C:"12" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=XP Client,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end || goto move_to_ghostOU
:move_to_secretOU
echo.%computername%|findstr /B /I /C:"745" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com userd:delegate /passwordd:topsecret /OU:"ou=Secret Stations,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT:34 && goto end || goto move_to_puka
:move_to_85OU
echo.%computername%|findstr /B /I /C:"85-712" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=85 COMPUTERS,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end || goto move_to_859OU
:move_to_859OU
echo.%computername%|findstr /B /I /C:"85-9" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"OU=859 CLIENTS,OU=BLDG 85 OU,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end || goto move_to_ctdOU
:move_to_ctdOU
echo.%computername%|findstr /B /I /C:"CTD" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=CTD COMPUTERS,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end || goto move_to_coajOU
:move_to_coajOU
echo.%computername%|findstr /B /I /C:"COAJ" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=COAJ COMPUTERS,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end || goto move_to_65OU
:move_to_65OU
echo.%computername%|findstr /B /I /C:"65" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=XP Client,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end || goto move_to_16
:move_to_16
echo.%computername%|findstr /B /I /C:"16" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=XP Client,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end || goto move_to_104OU
:move_to_104OU
echo.%computername%|findstr /B /I /C:"104" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=104 Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end || goto move_to_scscOU
:move_to_scscOU
echo.%computername%|findstr /B /I /C:"SCSC" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=SCSC COMPUTERS,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT:22 && goto end || goto default_OU
:move_to_default_OU
::If name does not match any strings, place computer in default container.
echo.%computername%|findstr /B /I /C:"" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"OU=DEFAULT CLIENTS,OU=XP ALL OU,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end
:end
::Pause was used in the attempt to troubleshoot.
pause