
14634
04.04.2012, aktualisiert um 13:02:36 Uhr
Per Script Netzwerkgeschwindigkeit auslesen?!
Hallo,
ich möchte per Script die eingestellt Netzwerkgeschwindigkeit unserer Client`s auslesen, ist sowas per Script möglich?
Haben eine Windows XP umgebung, unter Systeminfo steht leider nix zur Geschwindigkeit da.
Gibt es hier eine andere möglichkeit?
Danke im voraus
edit:
habe jetzt folgendes gefunden:
Set objWMIService = GetObject("winmgmts:")
Set wnet = CreateObject("WScript.Network")
Set fso = CreateObject("Scripting.FileSystemObject")
Set colNicConfig = objWMIService.ExecQuery("SELECT * FROM " & _
"Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
Const ForAppending = 8
Const ForReading = 1
Const ForWriting = 2
textdateipfad = "C:\"
textdateiname = wnet.ComputerName & ".txt"
On Error Resume next
Set textdatei = fso.CreateTextFile(textdateipfad & textdateiname, True) 'True = Überschreiben
ok = (Err.Number =0)
textdatei.Close
If ok Then
On Error Goto 0
For Each objNicConfig In colNicConfig
If Not IsNull(objNicConfig.IPAddress) Then
strIPAddresses = Join(objNicConfig.IPAddress)
Else
strIPAddresses = ""
End If
If Len(objNicConfig.Index) = 1 Then
nic_intindex = "000" & objNicConfig.Index
ElseIf Len(objNicConfig.Index) = 2 Then
nic_intindex = "00" & objNicConfig.Index
Else
'WScript.Echo nic_intindex
End If
speed = get_nic_speed(nic_intindex)
Set textdatei = fso.OpenTextFile(textdateipfad & textdateiname,ForAppending)
textdatei.WriteLine "Hostname= " & wnet.ComputerName
textdatei.WriteLine "Network Adapter= " & objNicConfig.Index
textdatei.WriteLine "IP Adress(en)= " & strIPAddresses
textdatei.WriteLine "MAC Adresse= " & objNicConfig.MACAddress
textdatei.WriteLine "Description= " & objNicConfig.Description
textdatei.WriteLine "Duplexmodus= " & speed
textdatei.Close
Next
Else
WScript.Echo "Fehler: " & Err.Description
End If
Function get_nic_speed(intindex) 'intindex 4 stellige Indexnummer
Const HKEY_LOCAL_MACHINE = &H80000002
arrmodes = array ("SpeedAndDuplex","SpeedDuplex","ForceSpeedDpx","MediaType","DuplexMode","ConnectionType","RequestedMediaType","ConnectionType_A","ForceSpeedDpx","*SpeedDuplex","EXTPHY")
strComputer = "."
Set oReg=GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
Set wshshell = WScript.CreateObject ("wscript.shell")
for each mode in arrmodes
strlink_desc = "ParamDesc"
strkeylink_desc = "SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\"& intindex & "\Ndi\params\" & mode & "\"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strkeylink_desc,strlink_desc,reglink_desc
if reglink_desc <> "" then
strfinal_key = "SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\"& intindex
strfinal_value = mode
oReg.GetStringValue HKEY_LOCAL_MACHINE,strfinal_key,strfinal_value,regfinal_value
strkey_enum = "SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\"& intindex & "\Ndi\params\" & mode & "\enum"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strkey_enum,regfinal_value,speed_name
get_nic_speed = speed_name
End If
Next
End Function
leider ließt er nur meine lokalen Einstellungen, ich möchte aber gerne das er eine TXT Liste mit PC`s abarbeitet und mir dann von allen wiedergibt.
ich möchte per Script die eingestellt Netzwerkgeschwindigkeit unserer Client`s auslesen, ist sowas per Script möglich?
Haben eine Windows XP umgebung, unter Systeminfo steht leider nix zur Geschwindigkeit da.
Gibt es hier eine andere möglichkeit?
Danke im voraus
edit:
habe jetzt folgendes gefunden:
Set objWMIService = GetObject("winmgmts:")
Set wnet = CreateObject("WScript.Network")
Set fso = CreateObject("Scripting.FileSystemObject")
Set colNicConfig = objWMIService.ExecQuery("SELECT * FROM " & _
"Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
Const ForAppending = 8
Const ForReading = 1
Const ForWriting = 2
textdateipfad = "C:\"
textdateiname = wnet.ComputerName & ".txt"
On Error Resume next
Set textdatei = fso.CreateTextFile(textdateipfad & textdateiname, True) 'True = Überschreiben
ok = (Err.Number =0)
textdatei.Close
If ok Then
On Error Goto 0
For Each objNicConfig In colNicConfig
If Not IsNull(objNicConfig.IPAddress) Then
strIPAddresses = Join(objNicConfig.IPAddress)
Else
strIPAddresses = ""
End If
If Len(objNicConfig.Index) = 1 Then
nic_intindex = "000" & objNicConfig.Index
ElseIf Len(objNicConfig.Index) = 2 Then
nic_intindex = "00" & objNicConfig.Index
Else
'WScript.Echo nic_intindex
End If
speed = get_nic_speed(nic_intindex)
Set textdatei = fso.OpenTextFile(textdateipfad & textdateiname,ForAppending)
textdatei.WriteLine "Hostname= " & wnet.ComputerName
textdatei.WriteLine "Network Adapter= " & objNicConfig.Index
textdatei.WriteLine "IP Adress(en)= " & strIPAddresses
textdatei.WriteLine "MAC Adresse= " & objNicConfig.MACAddress
textdatei.WriteLine "Description= " & objNicConfig.Description
textdatei.WriteLine "Duplexmodus= " & speed
textdatei.Close
Next
Else
WScript.Echo "Fehler: " & Err.Description
End If
Function get_nic_speed(intindex) 'intindex 4 stellige Indexnummer
Const HKEY_LOCAL_MACHINE = &H80000002
arrmodes = array ("SpeedAndDuplex","SpeedDuplex","ForceSpeedDpx","MediaType","DuplexMode","ConnectionType","RequestedMediaType","ConnectionType_A","ForceSpeedDpx","*SpeedDuplex","EXTPHY")
strComputer = "."
Set oReg=GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
Set wshshell = WScript.CreateObject ("wscript.shell")
for each mode in arrmodes
strlink_desc = "ParamDesc"
strkeylink_desc = "SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\"& intindex & "\Ndi\params\" & mode & "\"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strkeylink_desc,strlink_desc,reglink_desc
if reglink_desc <> "" then
strfinal_key = "SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\"& intindex
strfinal_value = mode
oReg.GetStringValue HKEY_LOCAL_MACHINE,strfinal_key,strfinal_value,regfinal_value
strkey_enum = "SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\"& intindex & "\Ndi\params\" & mode & "\enum"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strkey_enum,regfinal_value,speed_name
get_nic_speed = speed_name
End If
Next
End Function
leider ließt er nur meine lokalen Einstellungen, ich möchte aber gerne das er eine TXT Liste mit PC`s abarbeitet und mir dann von allen wiedergibt.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 183088
Url: https://administrator.de/forum/per-script-netzwerkgeschwindigkeit-auslesen-183088.html
Ausgedruckt am: 28.04.2025 um 05:04 Uhr
5 Kommentare
Neuester Kommentar

Hi,
Es sollte eigentlich möglich sein, ist es aber definitiv mit normalen Mitteln nicht, da weder WIMC noch die Powershell 2.0 die Speed- bzw. MaxSpeed-Werte liefern.
Und wenn man sich die ganzen Beiträge dazu im Netzt ansieht, hat es offenbar auch niemand geschafft oder ich habe es überlesen.
Ich würden einen anderen Weg wählen:
Im Key HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318 und dem entsprechenden numerischen Unterkey für den NIC gibt es den REG_DWORD-Wert
"ForceSpeedDpx", der hier für meinen NIC NVIDIA nForce 10/100/1000 Mbps Ethernet folgende Bedeutung aufweist:
0 Aut0Negotiate, ergibt 1 GB/s
1 10 MB Halfduplex
2 10 MB Fulllduplex
3 100 MB Halfduplex
4 100 MB Fullduplex
5 Autonegotiate 10 MB Halfduplex
6 Autonegotiate 10 MB Fullduplex
7 Autonegotiate 100 MB Halfduplex
8 Autonegotiate 100 MB Fullduplex
Das ließe sich mit einme REG Query-Aufruf und einem Find/Findstr-Filter auf den Displaynamen des NIC verhältnismäßig einfach ermitteln.
Ob die Werte identisch sind für alle moderneren Netzwerkkarten, kann ich allerdings nicht sagen, da meine Boards hier alle den NVIDIA- Kram besitzen.
Probiere es doch einfach mal aus.
Gruß
Zitat von @14634:
ich möchte per Script die eingestellt Netzwerkgeschwindigkeit unserer Client`s auslesen, ist sowas per Script möglich?
ich möchte per Script die eingestellt Netzwerkgeschwindigkeit unserer Client`s auslesen, ist sowas per Script möglich?
Es sollte eigentlich möglich sein, ist es aber definitiv mit normalen Mitteln nicht, da weder WIMC noch die Powershell 2.0 die Speed- bzw. MaxSpeed-Werte liefern.
Und wenn man sich die ganzen Beiträge dazu im Netzt ansieht, hat es offenbar auch niemand geschafft oder ich habe es überlesen.
Ich würden einen anderen Weg wählen:
Im Key HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318 und dem entsprechenden numerischen Unterkey für den NIC gibt es den REG_DWORD-Wert
"ForceSpeedDpx", der hier für meinen NIC NVIDIA nForce 10/100/1000 Mbps Ethernet folgende Bedeutung aufweist:
0 Aut0Negotiate, ergibt 1 GB/s
1 10 MB Halfduplex
2 10 MB Fulllduplex
3 100 MB Halfduplex
4 100 MB Fullduplex
5 Autonegotiate 10 MB Halfduplex
6 Autonegotiate 10 MB Fullduplex
7 Autonegotiate 100 MB Halfduplex
8 Autonegotiate 100 MB Fullduplex
Das ließe sich mit einme REG Query-Aufruf und einem Find/Findstr-Filter auf den Displaynamen des NIC verhältnismäßig einfach ermitteln.
Ob die Werte identisch sind für alle moderneren Netzwerkkarten, kann ich allerdings nicht sagen, da meine Boards hier alle den NVIDIA- Kram besitzen.
Probiere es doch einfach mal aus.
Gruß

Das funktioniert so auch nicht. 
Du musst die vollständigen Pfade zu den Dateien angeben, .vbs kannst du allein so auch nicht aufrufen, du musst es so versuchen:
Nur als Anmerkung. Man sollte eine Datei, unabhängig von der Endung niemals nach einem im System vorhandenen Parameter oder einem Dateinamen verwenden.
Das führt garantiert irgendwann zu Problemen.
Du musst die vollständigen Pfade zu den Dateien angeben, .vbs kannst du allein so auch nicht aufrufen, du musst es so versuchen:
psexec -c -f %systemroot%\system32\wscript.exe LW:\Pfad\start.vbs
Nur als Anmerkung. Man sollte eine Datei, unabhängig von der Endung niemals nach einem im System vorhandenen Parameter oder einem Dateinamen verwenden.
Das führt garantiert irgendwann zu Problemen.

das X Laufwerk ist eine Netzlaufwerk.
Hast du dir die Erklärung zum Parameter -c bei psexec mal durchgelesen?
Wenn du wissen willst, ob das überhaupt funktioniert, starte mit psexec ohne zusätzliche Parameter eine Konsole auf dem Remote-Rechner und führe dein Script dort direkt aus.
Vorher natürlich dorthin kopieren.
Wenn du dort ohne dein Script
wmic nic {index} > .\nicinfo.txt
Wahrscheinlich musst du den Befehl wmic nach einer kurzen Zeit durch STRG-PAUSE unterbrechen. WMIC reagiert da offenbar etwas unnormal.