14634
Goto Top

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.

Content-Key: 183088

Url: https://administrator.de/contentid/183088

Ausgedruckt am: 29.03.2024 um 10:03 Uhr

Mitglied: 106009
106009 04.04.2012 um 14:52:50 Uhr
Goto Top
Hi,

Zitat von @14634:
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. face-smile

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. face-wink

Gruß
Mitglied: 14634
14634 04.04.2012 um 15:20:21 Uhr
Goto Top
hey, leider habe ich immer bisschen andere werte, da wir verschiedene NIC`s haben.

ich wollte das vbs Script mit psexec auf die anderen PC`S ausführen, nur leider bekomme ich da eine fehlermeldung das die Datei nicht gefunden war, mein Befehl hieß:

psexec -c -f \\PC_NAME start.vbs
Mitglied: 106009
106009 04.04.2012 um 15:49:38 Uhr
Goto Top
Das funktioniert so auch nicht. face-smile

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. face-wink
Das führt garantiert irgendwann zu Problemen.
Mitglied: 14634
14634 05.04.2012 um 06:32:32 Uhr
Goto Top
Hey, danke für deine Antwort, leider bekomme ich folgenden Fehler:


c:\temp>psexec \\PC_Name -c -f %systemroot%\system32\wscript.exe x:\test.vbs

PsExec v1.98 - Execute processes remotely
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com

Error copying C:\Windows\system32\wscript.exe to remote system:
Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.

das X Laufwerk ist eine Netzlaufwerk.
Mitglied: 106009
106009 05.04.2012 um 07:41:45 Uhr
Goto Top
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
ausführst, wirst du wahrscheinlich feststellen, wenn du dir die nicinfo.txt mit type anzeigen lässt, dass man zu Speed und MaxSpeed für die Interfacekarte keine Informationen bekommt.
Wahrscheinlich musst du den Befehl wmic nach einer kurzen Zeit durch STRG-PAUSE unterbrechen. WMIC reagiert da offenbar etwas unnormal. face-smile