Windows 7 – Raccogli la forza del segnale wireless tramite la row di command

Vorrei vedere la forza del segnale wireless (preferibilmente via dbm o%) in Windows 7 tramite la row di command.

Ecco cosa ho provato:

1) VBscript usando MSNdis_80211_ReceivedSignalStrength (ma funziona solo nelle versioni pre-Vista)

2) Riga di command usando "netsh wlan show interfaces"

Idealmente, vorrei raccoglierlo per un certo periodo di tempo e metterlo in media. Questo, lo so, non è ansible attraverso un'esecuzione retta della row di command, quindi sono disposto a cedere questa possibilità se posso solo get solo la potenza del segnale in percentuale (%).

Dopo molto combattimento interno, ho utilizzato una combinazione di VBScript e linea di command. Dal momento che non sembra essere una metodologia WMI per afferrare più la forza del segnale, e poiché preferirei raccogliere le informazioni per un breve periodo e in media, sto usando VBScript per eseguire NETSH e tirare i dati Ho bisogno.

Questo potrebbe essere assolutamente rapidamente modificato per ripetere l'infinito in modo da poter camminare con il porttile per determinare la potenza del segnale in diverse aree (anche se non è assolutamente raccomandato perché esistono molto più di pacchetti software di terze parti).

================================================== ==================

dim obj_shell, obj_cmdexectestWLAN, var_line, obj_cmdexec, var_signalstrength, var_testinterval, var_counter, var_dots, var_arrayscontents, var_item, var_average, var_multiplier, arr_signalstrength() var_testinterval = 1000 'in milliseconds var_counter = 0 var_dots = "." 'this is for a cheap progress bar set obj_shell = wscript.createobject("WScript.Shell") set obj_cmdexectestWLAN = obj_shell.exec("%comspec% /C netsh wlan show interfaces") var_line = obj_cmdexectestWLAN.stdout.readline() if instr(var_line, "not running") = 0 then function func_getwirelesssignalstrength() set obj_cmdexec = obj_shell.Exec("%comspec% /C netsh wlan show interfaces | FIND ""Signal""") var_line = obj_cmdexec.stdout.readline() var_line = replace(var_line,"Signal : ","") var_line = replace(var_line,"%","") var_line = trim(var_line) if isnumbersc(var_line) then func_getwirelesssignalstrength = var_line else func_getwirelesssignalstrength = "Error" end if end function do while var_counter < 10 '0-based. Gives us 10 samples. If you want a longer interval, you can modify both 'var_counter' at the top and this as well wscript.stdout.write(var_dots & chr(13)) var_signalstrength = func_getwirelesssignalstrength() if isnumbersc(var_signalstrength) then if var_counter = 0 then redim arr_signalstrength(0) arr_signalstrength(0) = var_signalstrength else redim preserve arr_signalstrength(ubound(arr_signalstrength) + 1) arr_signalstrength(ubound(arr_signalstrength)) = var_signalstrength end if var_counter = var_counter + 1 var_dots = var_dots & "." wscript.sleep var_testinterval else wscript.echo("Error: Non-numbersc value received from NETSH. Quitting...") wscript.quit end if loop for each var_item in arr_signalstrength var_arrayscontents = var_arrayscontents & var_item & "," var_multiplier = cint(var_multiplier) + cint(var_item) next var_average = var_multiplier/var_counter 'wscript.echo("Multiplier:" & var_multiplier & vbcrlf & "Counter:" & var_counter & vbcrlf & "Average:" & var_average & vbcrlf & "Average Rounded:" & round(var_average,2)) 'test region to see our output in more detail wscript.echo("Values Received: " & var_arrayscontents) 'test region to see our arrays contents wscript.echo("Signal Strength Average: " & round(var_average,2)) else wscript.echo("Error: WLAN Service Not Running") wscript.quit end if