Jump to content

Netzwerkadapter abfragen - Geschwindigkeit und Autoermittlung?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

kennt jemand eine Möglichkeit zur VBS-Abfrage des Duplexmodus und/oder der eingestellten Netzwerkkarten-Geschwindigkeit von Windows XP Workstations in einer Windows 2008 Domäne?

 

Ich habe es bisher über WMI (Win32_NetworkAdapter) versucht und bekomme da bei den Feldern "Autosense" und "Speed" nur leere Felder...

 

Im MSDN habe ich dazu gefunden, dass diese Felder nicht implementiert seien und dass "CIM_NetworkAdapter" zwar die Werte habe aber ebenfalls nicht implementiert sei.

 

Gibt es eine Möglichkeit, diese Felder irgendwie zu implementieren oder bin ich hier ganz auf dem Holzweg und es gibt eine andere Abfragemöglichkeit?

 

 

Vielen Dank und Grüße

Karsten

Link zu diesem Kommentar

Hallo und herzlich Willkommen hier an Board.

 

Ich hab da mal eine kleine vbs-Funktion zu geschrieben.

 

Ich nehme an wenn du WMI-Abfragen machst, machst du die über vbs.

 

Über WMI kannst du auch den Index abfragen.

Den müsstest du nur noch in eine 4 stellige Zahl umwandeln.

 

Hier das Skript

 

function get_nic_speed(intindex) 'intindex 4 stellige Indexnummer
Const HKEY_LOCAL_MACHINE = &H80000002
arrmodes =  array ("SpeedAndDuplex","SpeedDuplex","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

 

 

Bis jetzt habe ich noch keine NIC/Treiber gesehen wo die WMI-Abfragen auf Auto-Sense und Speed funktionieren.

 

Gruß

 

Danny

Link zu diesem Kommentar

Hallo Danny,

 

danke für die Idee mit der Registry.

 

Ich nehme an wenn du WMI-Abfragen machst, machst du die über vbs.

 

Ja. Danke für den Beispiel-Code!

 

Über WMI kannst du auch den Index abfragen.

Den müsstest du nur noch in eine 4 stellige Zahl umwandeln.

 

Ich nehm mal vom "Win32_NetworkAdapter" die "DeviceID", probier es aus und melde mich mit einem Ergebnis

:)

 

Karsten

Link zu diesem Kommentar
  • 1 Monat später...

Hallo,

 

hier nun das zusammengebaute Skript:

 

- Es fragt die NICs mit einer IP ab und trägt die Ergebnisse in eine Textdatei ein.

 

Danke noch mal für die Hilfe!

 

Grüße

Karsten

 

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

Link zu diesem Kommentar
  • 6 Monate später...
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...