none
ログオンスクリプトでバッチファイルを実行させる RRS feed

  • 質問

  • お世話になります。

    DHCPサーバーの導入に伴い、社内PC全台をStatic→DHCPに変更する予定です。

     ※IP/DNS/WINS全てStaticで設定済みです。

     ※社内PCはAD環境可で利用しています。

     ※AD→WindowsServer2008R2 社内PC→XP proを利用しています。

    社内PC台数が多く手動変更が難しい為、「netsh」コマンドを記載したバッチをログオンスクリプトで実行させようと考え、

    動作確認をしていたのですが、以下事象が発生しています。

     ※バッチファイルには以下コマンドを記載しています。

     netsh interface ip set address "ローカル エリア接続" dhcp
     netsh interface ip set dns "ローカル エリア接続" dhcp
     netsh interface ip set wins "ローカル エリア接続" dhcp

    ■事象

     ・「netsh」コマンドを記載したバッチをログオンスクリプトで実行→DNSとWINSがStaticのまま変更されない。

     ・「netsh」コマンドを記載したバッチをローカルにダウンロードして実行→IP/DNS/WINS全てDHCPに変更される。

     ・ログオンスクリプトフォルダにアクセスし「netsh」コマンドを記載したバッチを実行→IP/DNS/WINS全てDHCPに変更される。

    ログオンスクリプト経由の場合のみDNSとWINSの設定変更が失敗しているようなのですが、

    考えられる原因や情報がありましたらご教授下さい。

    >ログオンスクリプトでクライアントのDNSを変更したい

    上記スレッドも参照しており、今回の利用方法は通常行わない(正常に動かない?)ものなのか、とも考えております。

    以上、お手数ですがご教授よろしくお願い致します。

    2012年3月7日 14:39

回答

  • 失敗した時にコマンドはどういうメッセージを表示しているのでしょうか。

    また、同じログインスクリプトの netsh interface ip set address ... よりあとの行は実行されているのでしょうか?(つまり、netsh interface ip set address ... の行でバッチファイルが終了しちゃっているのでしょうか?)

    • 回答の候補に設定 田中夢 2012年3月23日 7:04
    • 回答としてマーク 田中夢 2012年3月28日 7:49
    2012年3月8日 5:58
  • 「エラーメッセージは出力されません」と言われても…

    それはログオン スクリプトを表示して実行するようにポリシーを設定して pause するなり、netsh の出力をローカルのどこかにリダイレクトして保存するなりして、バッチがどこまで実行されているか、あるいはどのようなメッセージでこけているのか見ないことには解決のしようもないと思うのですが。

    • 回答の候補に設定 田中夢 2012年3月23日 7:05
    • 回答としてマーク 田中夢 2012年3月28日 7:49
    2012年3月9日 10:38
  • 出力を取るのが先決だと思いますが、
    netsh interface ip set address が成功しているのであれば、パスや権限は問題なく、アドレス変更で一時ネットワークが切れてバッチファイルの次行アクセスが継続できてなさそうな気もします。
    • 回答の候補に設定 田中夢 2012年3月23日 7:06
    • 回答としてマーク 田中夢 2012年3月28日 7:49
    2012年3月9日 11:30
  • !!!! 言われてみれば そうですね。 HomeCloset さんのコメントが真相のような気がします。

    これからすると、 

    ログオンスクリプトを2段構えにして

    -ログオンで動くスクリプト { 設定変更用のバッチファイルを C:\temp\lanconfigchange.bat  などにコピーし、 lanfongichange.bat を実行して終わりにする }

    -lanconfigchange.bat { netsh コマンドで 設定を変更する。 可能だったら、一番最後のコマンドで del c:\temp\lanconfigchange.bat などで自身を削除する }

    自身の削除が出来なかったら、別のタイミングで lanconfigchange.bat を削除する ログオンスクリプトを実行する。

    が良い案や。


    • 回答の候補に設定 田中夢 2012年3月23日 7:06
    • 回答としてマーク 田中夢 2012年3月28日 7:49
    2012年3月15日 2:47
  • もしも次行継続ができなくなっているとしたら、スクリプトの最後の最後で

     netsh ... & netsh ... & netsh ...

    と一行にしてしまうのもありかと思います。

    • 回答としてマーク 田中夢 2012年3月28日 7:49
    2012年3月15日 12:03

すべての返信

  • 失敗した時にコマンドはどういうメッセージを表示しているのでしょうか。

    また、同じログインスクリプトの netsh interface ip set address ... よりあとの行は実行されているのでしょうか?(つまり、netsh interface ip set address ... の行でバッチファイルが終了しちゃっているのでしょうか?)

    • 回答の候補に設定 田中夢 2012年3月23日 7:04
    • 回答としてマーク 田中夢 2012年3月28日 7:49
    2012年3月8日 5:58
  • なんとなしに、 netsh.exe へのフルパス書かないとコマンド実行できてないんじゃないかと思ってみたりします。

    %windir%\system32\netsh.exe interface ip set ....

    的な。

    2012年3月8日 7:20
  • netshを(ログオンスクリプトとして)実行するユーザーさんは管理者権限が必要と思うのですが、その点はOKでしょうか

    2012年3月8日 13:15
  • ご返信頂きありがとうございます。

    >HomeCloset様

    バッチはバックグラウンドで実行される為、エラーメッセージは出力されません。
    →ローカルエリア接続の設定を見ると、IPはDHCP設定に変わっているのに、
     DNSとWINSはStatic設定が残っているという状況です。

    >かんきち様

    情報が不足しており、すみません。クライアントには管理者権限を与えています。
    ログオンスクリプトフォルダにアクセスし、バッチファイルが正常動作しますので、
    この辺は問題ないかと考えています。

    >SHIMSOFT様

    フルパスの記載ですが、ログオンスクリプトを配置しているフォルダまでの
    フルパスをコマンドの頭に記載するという事でしょうか。
    これは試しておりませんでしたので、確認してみます。


    以上、よろしくお願い致します。

    2012年3月9日 0:35
  • 私の記憶では、 ドメインコントローラで指定する ログオンスクリプトは、

     ・ 無条件に管理者特権で動作する。

     ・ パスは一切通らないので、何かにつけフルパスを指定する。

    というイメージがあります。

    なので、 netsh コマンド自体に対するフルパスを。

    もし、実際のスクリプトでは netsh コマンドの実行記録などを  > configlog.log  みたいな 確認用情報収集も兼ねているようであれば、

    この configlog.log についてもフルパス指定が必要です。

    2012年3月9日 1:03
  • 「エラーメッセージは出力されません」と言われても…

    それはログオン スクリプトを表示して実行するようにポリシーを設定して pause するなり、netsh の出力をローカルのどこかにリダイレクトして保存するなりして、バッチがどこまで実行されているか、あるいはどのようなメッセージでこけているのか見ないことには解決のしようもないと思うのですが。

    • 回答の候補に設定 田中夢 2012年3月23日 7:05
    • 回答としてマーク 田中夢 2012年3月28日 7:49
    2012年3月9日 10:38
  • 失礼致しました。ご指摘の通りです。

    ログオンスクリプトを表示して実行する、netshの出力を保存するという事を検討していませんでした。

    まずは上記方法で、バッチの実行を状況を調べてみます。

    2012年3月9日 11:12
  • 出力を取るのが先決だと思いますが、
    netsh interface ip set address が成功しているのであれば、パスや権限は問題なく、アドレス変更で一時ネットワークが切れてバッチファイルの次行アクセスが継続できてなさそうな気もします。
    • 回答の候補に設定 田中夢 2012年3月23日 7:06
    • 回答としてマーク 田中夢 2012年3月28日 7:49
    2012年3月9日 11:30
  • !!!! 言われてみれば そうですね。 HomeCloset さんのコメントが真相のような気がします。

    これからすると、 

    ログオンスクリプトを2段構えにして

    -ログオンで動くスクリプト { 設定変更用のバッチファイルを C:\temp\lanconfigchange.bat  などにコピーし、 lanfongichange.bat を実行して終わりにする }

    -lanconfigchange.bat { netsh コマンドで 設定を変更する。 可能だったら、一番最後のコマンドで del c:\temp\lanconfigchange.bat などで自身を削除する }

    自身の削除が出来なかったら、別のタイミングで lanconfigchange.bat を削除する ログオンスクリプトを実行する。

    が良い案や。


    • 回答の候補に設定 田中夢 2012年3月23日 7:06
    • 回答としてマーク 田中夢 2012年3月28日 7:49
    2012年3月15日 2:47
  • もしも次行継続ができなくなっているとしたら、スクリプトの最後の最後で

     netsh ... & netsh ... & netsh ...

    と一行にしてしまうのもありかと思います。

    • 回答としてマーク 田中夢 2012年3月28日 7:49
    2012年3月15日 12:03
  • HOMECloset様 SHIMSOFT様

    回答頂きありがとうございます。

    ご指摘の通り、アドレス変更でネットワークが切れている為、次行以降のコマンドが失敗していたようです。

    以下コマンドの順番に変更し、ログオンスクリプトにて正常動作する事確認できました。

     

     netsh interface ip set wins "ローカル エリア接続" dhcp

     netsh interface ip set dns "ローカル エリア接続" dhcp

     netsh interface ip set address "ローカル エリア接続" dhcp

    色々ご教授頂きありがとうございました。

    2012年3月15日 14:06
  • こんにちは。
    フォーラム オペレーターの田中夢です。
     
    ご回答くださった皆様
    参考になるアドバイスをありがとうございます。
     
    新米サーバー管理者 さん
    ご希望の動作が実現できた旨をご報告いただきありがとうございます。
     
    今回のご質問につきましては、HomeCloset さんと SHIMSOFT さんからの投稿をトラブルシューティングの参考にしていただけたようですね。同様の情報を探している方にも有益な情報だと思われますので、勝手ながら私のほうで [回答としてマーク] とさせていただきますね。
     
     
    今後とも TechNet フォーラムをどうぞよろしくお願いします。
    ---------------------------------------------------------------------
    日本マイクロソフト株式会社 フォーラム オペレーター 田中夢

     

    2012年3月28日 7:49