0

私はこの地球上で最も知的な人間の 1 人のように見えますが、スクリプトやプログラミングは得意ではありません。

私の基本的な現在の設定は次のとおりです。

  • Windows 2003 はまもなく 2008 R2 AD スキーマになります
  • XP SP3 ワークステーションは、まもなく Windows 7 になります (1 年か 2 年後)。

これは、この投稿で詳しく説明されているドメイン参加手順を完全に自動化しようとしている画像です。

GhostCast サーバーまたは GSS バージョン 2.5 の Ghost コンソールを使用してイメージを SysPrep した後、いくつかのバッチ スクリプトといくつかの vbs ファイルを使用して実行します。基本的に、WSNAME はテキスト ファイルの MAC アドレスを介してコンピュータの名前を変更し、再起動します。

コンピューターの名前が変更された後、プログラムはその SQL DB インスタンスを更新する必要があり、その後コンピューターを再起動する必要があります。

この再起動後、このスクリプトで次のすべての自動化を実行したいと思います。

netdom を使用したバッチ スクリプトをお勧めします。

  1. 文字列または適切なものを介してコンピュータ名を照会します
  2. コンピューター名が文字列と一致する場合は、このコンピューターをこのドメインと OU に参加させてから再起動し、スクリプトを終了するか、
  3. コンピューター名が一致しない場合は、次のステートメントに移動して一致を確認し、このコンピューターをこのドメインと OU に参加させてから再起動し、スクリプトを終了するか、
  4. 一致する文字列が見つからない場合は、ステートメントを再帰してコンピューターをデフォルトの 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
4

1 に答える 1

0

| は使用しません。名前の意味が実際にある特定の場合を除いて、これはそれらの1つではありません. バッチには常にパイプの問題がありました。

標準の関数呼び出しを使用して書き直します (:Tag 命名法を使用して関数にタイトルを付け、GOTO :EOF を使用してそれらを終了します (下部に :EOF タグを付けます)。Call および Goto コマンドを使用して移動します。システムから必要な情報を抽出し、そこから変数に確実に挿入し、ファイルに書き込み、 FOR /F を使用してプルします。

%% を使用する必要があるのは、FOR /F を使用するときだけです。

システムにドメイン参加するにはいくつかの方法があります。NetDom、WMIC、Powershell、VBS 関数など。私の好みは、最新の方法を使用してスクリプトに外部化することです (たとえば、データをテキスト ファイルにドロップしてから、他のバッチが読み取った変数を返す powershell 関数を呼び出して、何が起こっているかを判断します)。Batch は、実際にはそのように使用するために構築されました。

最後に、参加したコンピューターを適切な OU に移動するためのスクリプトをサーバー上に用意します。ホスト スクリプトでこれを行うと、展開中にミスをしてそれを見つけた場合、面倒な作業になる可能性があります。押すのはもう1つのボタンです。大したことではありません。また、展開グループ ポリシー設定を使用できます。

于 2014-01-28T14:54:45.950 に答える