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