マスターブラウザを探す [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