Windows7でNICのON/OFF
- そこそこの頻度でNICのON/OFF をするんですが、ネットワークプロパティからやコマンドプロンプト(管理者)でnetsh をたたくのも面倒なのでvbscriptで実行する場合のメモ
- そのままだと、UACが面倒なので「タスク スケジューラ」に「■最上位の特権で実行する」で登録してそれを実行する
ifup.vbs (タスクスケジューラ ifupで登録)
' インターフェース名「eth0」は環境に合わせて変更 strCmdLine = "cmd /c netsh interface set interface eth0 enable" Set ws = CreateObject("Wscript.Shell") ws.run strCmdLine, vbhide WScript.quit(0)
ifdown.vbs (タスクスケジューラ ifdownで登録)' インターフェース名「eth0」は環境に合わせて変更 strCmdLine = "cmd /c netsh interface set interface eth0 disable" Set ws = CreateObject("Wscript.Shell") ws.run strCmdLine, vbhide WScript.quit(0)
ifupdown.vbs(NICのON/OFF用のスクリプト)Option Explicit 'WMIにて使用する各種オブジェクトを定義・生成する。 Dim oClassSet Dim oClass Dim oLocator Dim oService Dim sMesStr Dim strCmdLine Dim ws Dim Return 'ローカルコンピュータに接続する。 Set oLocator = WScript.CreateObject("WbemScripting.SWbemLocator") Set oService = oLocator.ConnectServer 'クエリー条件(NICの名称に、VMwareを含まない条件で)をWQLにて指定する。 Set oClassSet = oService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration " & _ "Where NOT Description Like '%VMWare%'") 'コレクションを解析する。 For Each oClass In oClassSet If oClass.IPEnabled = True Then ' ---------------------------------------------------------- ' ネットワークが起動している時の処理 ' ---------------------------------------------------------- ' ifdown実行 strCmdLine = "cmd /c schtasks.exe /run /tn ifdown" Set ws = CreateObject("Wscript.Shell") Return = ws.run(strCmdLine,0) MsgBox "NICを停止しました" & vbCrLf & vbCrLf WScript.quit(0) End If Next ' ---------------------------------------------------------- ' ネットワークが停止している時の処理 ' ---------------------------------------------------------- ' ifup実行 strCmdLine = "cmd /c schtasks.exe /run /tn ifup" Set ws = CreateObject("Wscript.Shell") Return = ws.run(strCmdLine,0) MsgBox "NICを起動しました" & vbCrLf & vbCrLf WScript.quit(0)
- スクリプトは以下を
パクリ参考にしました
[WMI for VBS] ネットワークインターフェースカードの情報を取得するサンプル: Win32_NetworkAdapterConfiguration - WMI Sample ( WMI Fun !! )