web-dev-qa-db-ja.com

ネットワーク接続が変更されたときにスクリプトを実行するにはどうすればよいですか?

ネットワーク接続が変更されたときにさまざまなことを行うスクリプトを作成したいと思います。たとえば、マシンがオフィスのネットワークに接続している場合、次のことを実行したいと思うかもしれません。

  • 自分自身をミュート
  • dNSを変更する
  • プロキシ設定を変更する
  • デフォルトのプリンターを変更する

次に、マシンがオフィスのネットワークから外れると、それらの一部が元に戻る可能性があります。

おそらく「アクティブなネットワーク」は、IPアドレス/ゲートウェイの範囲やWIFIネットワーク名などに基づいています。

これを達成するための推奨ツールはありますか?このようなものが多くのITプロフェッショナルに当てはまるので、いくつかの良いヒントがあると確信しています。

これは、ユーザーがログオン/ログオフしたときだけでなく、ネットワークが変更されたときに機能することが望ましいことに注意してください。

7
Michael Haren

Windowsの "Network Location Awareness"サービス( http://msdn.Microsoft.com/en-us/library/ms739931(VS.85).aspx )XP( 2000年?思い出せません...)以上でこの機能が有効になりますが、それを利用するアプリケーションを誰かが作成した場所はわかりません。自分で何かをコーディングしたいのですが、それについて考え始めるのに十分な予備のサイクルがありません。

これは単純な小さなVBScriptのことではありませんが、それほど多くのコーディングではありません。たぶん誰かがそのアイデアを手に入れてそれを実行することができるでしょう。 http://www.Microsoft.com/downloads/details.aspx?familyid=ef8a6228-f11d-4ba0-b73e-dd8dc7dd11e8&displaylang=en にもサンプルコードがあります。

私はこの機能を何度も欲しがっていますが、それを見たい人は少なくないと思います。

2
Evan Anderson

タスクスケジューラを使用して実行できます。

  1. 「タスクスケジューラライブラリ」を右クリック
  2. 「タスクの作成」をクリックします
  3. 「名前:」フィールドに新しいタスクの名前を入力します。
  4. [セキュリティオプション]領域に、希望する場所にチェックボックスがあることを確認します。
  5. 「トリガー」タブで「新規...」をクリックします
  6. 「Begin the task:」を選択=>「On a event」
  7. 「ログ:」を選択=>「Microsoft-Windows-NetworkProfile/Operational」
  8. 「ソース」を選択=>「NetworkProfile」
  9. 「イベントID:」と書きます=> 10000
  10. このダイアログでOKです。
  11. [アクション]タブで[新規...]をクリックします
  12. 「アクション」を選択=>「プログラムを開始」
  13. 「Program/script:」については、お気に入りのスクリプトファイルを参照してください。
  14. このダイアログでOKです。
  15. 「アイドル」、「AC電源」などの条件については、「条件」タブをお好みで設定してください。
  16. また、「設定」タブで設定を行います。
  17. はい、ここですべて完了しました。
  18. 新しいイベントをテストします。

念のため、コンピュータ「サスペンド」と「レジューム」のイベントもあります。たとえば、私はこれらを使用して、これらのイベントでHamachiを停止および再起動します。それ以外の場合は、私のマシンに問題があるようです。
コンピューター「サスペンド」の場合、ログ「Microsoft-Windows-Kernel-Power/Thermal-Operational」、ソース「Kernel-Power」を使用でき、イベントIDは42です。
コンピュータ「再開」の場合、ログ「システム」、ソース「電源トラブルシューティング」を使用でき、イベントIDは1です。

ユーザーログイン/ログオフの場合、タスクスケジューラでのイベントはわかりません(ただし、イベントスケジューラでも利用できると思います)が、代わりにここで構成できます。

  1. 起動gpedit.msc
  2. 「ユーザー設定」を開く
  3. 「Windows設定」を開く
  4. [スクリプト(ログオン/ログオフ)]をクリックします
  5. 右側のペインで「ログオン」および「ログオフ」イベントのスクリプトを割り当てることができます。複数のスクリプトを割り当てる場合は、それらが同期して実行されると想定しないでください。彼らはそうしないかもしれません。この場合、代わりに他のスクリプトを順に呼び出す単一のスクリプトを使用します。これらのスクリプトを実行するアカウントを確認していません-それはユーザーですか、システムですか?

同じウィンドウの[Computer Configuration]フォルダーで、コンピューターの「スタートアップ」イベントと「シャットダウン」イベントに対して同様のことを行うことができます。スタートアップスクリプトは、ユーザーがログオンする前にシステムアカウントで実行されます。

7
Roland Pihlakas

これは横向きで部分的な答えのようなものです(元の記事が見つからないため、文書化されていません)が、Windows 7のプリンターオブジェクトにプロパティシートがあり、デフォルトに応じてデフォルトを変更できると確信していますサブネット。

私はあなたのリストの残りに対処する機能も見てみたいです。

1
Kara Marfia

.netフレームワークバージョン2を使用すると、System.Net.NetworkInformation名前空間を使用できます。これから、次のことを判別できます。

ネットワークの可用性:NetworkAvailabilityChangedEventHandler()ネットワークアドレスの変更:NetworkAddressChangedEventHandler()ipaddress:IPAddressInformation

等々。

私が使用していないため、PowerShellを介してどれだけ利用できるかわかりません。しかし、私はネットワークの可用性を監視し、ネットワークが利用可能になったときにネットワーク共有に接続する非常にシンプルなvb.netトレイアプリケーションを作成しました。コードの必要最低限​​の機能に興味がある場合は、お知らせください。

1
RobS

以前は Net Profiles である程度成功しています。

1
MattB

Ipconfigコマンドの結果を読み取るバッチファイルを作成し、5秒ごとに実行することができます...

0
sangretu