マスターブラウザを探す [VBSでnbtstatコマンドを生成して実行]

事務所で、ネットワーク一覧が正しく表示されない場合がたまにあって困っていた
マスターブラウザとなっているパソコンを、再起動すれば回復するのはわかっていたが、 マスターブラウザを探すのにめんどい…

 nbtstat -A 192.168.1.1 > d:\temp.txt
 nbtstat -A 192.168.1.2 >> d:\temp.txt
     .
     .
 nbtstat -A 192.168.1.256 >> d:\temp.txt

こんな感じで全IPアドレス指定で実行して、出力結果よ「MSBROSE」の文字を検索して見つけていた

これの実行時間は約20分

存在しないIPアドレスに対してnbtstatを実行するとタイムアウトに時間がかかっているようだ

で、nbtstatを実行する前にpingでIPアドレスが存在するか確認することで、4分程に時間短縮できたのでメモしておきます

'
' nbtstat 192.168.1.1 <-> 192.168.1.256
'
 Dim myArray
 Dim myArrayList
 set myArrayList = CreateObject("System.Collections.ArrayList")
 Set objWshShell = WScript.CreateObject("WScript.Shell")
 for i=1 to 256
   strIP="192.168.1." & i
   Set objWMIService = GetObject("winmgmts:\.")
   Set colItems = objWMIService.ExecQuery ("Select * from Win32_PingStatus Where Address = '" & strIP & "' And Timeout=50")
   For Each objItem in colItems
     If objItem.StatusCode = 0 Then
       myArrayList.add "echo **** " & strIP & " **** >> d:\nbtstat_log.txt"         
       myArrayList.add "nbtstat -A " & strIP & " >> d:\nbtstat_log.txt"         
     End If
   Next
 next
 myArray = myArrayList.ToArray()
 str = join(myArray,vbCrLf)    
 set fs = CreateObject("Scripting.FileSystemObject")
 set fn = fs.OpentextFile("d:\nbtstat_log.bat",2,true)
 fn.WriteLine "type nul > d:\nbtstat_log.txt"
 fn.WriteLine str
 fn.close
 set fn = nothing
 set fs = nothing
 str = "d:\nbtstat_log.bat"
 objWshShell.run str,0,true

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です