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 !! )