Microsoft MVPs inside





 MCSEboard.de MCSE Forum zu Windows XP / 2003 / 2008 Server & Windows Vista / Windows 7
Registrieren Hilfe Regeln Benutzerliste Suchen Heutige Beiträge Alle Foren als gelesen markieren

Windows Forum — Scripting


Alles zum Thema System Administration Scripting — Q & A zum Thema Scripting: Batch, VBS, WMI, PowerShell


Antwort
     
Themen-Optionen
Alt 13.07.2009, 08:39   #1
Newbie
 
Offline
Registriert seit: 11-2008
Beiträge: 4
Netzwerkadapter abfragen - Geschwindigkeit und Autoermittlung?

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
    Mit Zitat antworten
Alt 13.07.2009, 10:53   #2
Senior Member
 
Benutzerbild von Dr Kiffer
 
Offline
Registriert seit: 02-2003
Ort: Duisburg (NRW)
Beiträge: 444
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

Code:
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

Signatur
Ich sag nur alles ist möglich auch wenn man nicht weiß warum...
Passed: MCSE2k3{70-290, 70-291, 70-284, 70-620, 70-293, 70-294, 70-297}MCITP:EA{ 70-649 70-647}
Next: Sommerpause

    Mit Zitat antworten
Alt 13.07.2009, 12:11   #3
Newbie
 
Offline
Registriert seit: 11-2008
Beiträge: 4
Thema

Hallo Danny,

danke für die Idee mit der Registry.

Zitat von Dr Kiffer Beitrag anzeigen
Ich nehme an wenn du WMI-Abfragen machst, machst du die über vbs.
Ja. Danke für den Beispiel-Code!

Zitat von Dr Kiffer Beitrag anzeigen
Ü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
    Mit Zitat antworten
Alt 02.09.2009, 12:41   #4
Newbie
 
Offline
Registriert seit: 11-2008
Beiträge: 4
:D Fertiges Skript

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

Code:
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
    Mit Zitat antworten
Alt 03.03.2010, 12:37   #5
Newbie
 
Offline
Registriert seit: 03-2010
Beiträge: 1
wie ist das Script lauffähig ?

Hallo,

wenn ich den code verwenden möchte was muss ich tun ?
Einfach als *.vb abspeichern und ausführen funktioniert ja nicht ....

Gruß
AO
    Mit Zitat antworten
Alt 03.03.2010, 13:25   #6
Expert Member
 
Benutzerbild von Cybquest
 
Offline
Registriert seit: 12-2006
Ort: Weinsberg
Beiträge: 1.510
VB Scripte speichert man als *.vbs

Signatur
My name is Frank, you can say you to me.

    Mit Zitat antworten
Antwort


Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Netzwerkadapter bravestar Windows Forum — Allgemein 1 31.07.2007 11:52
XP - Netzwerkadapter Mozilla Windows Forum — LAN & WAN 1 24.10.2005 09:48
XP - Netzwerkadapter ips zuweisen Mediha Windows Forum — LAN & WAN 4 01.05.2005 10:20
2K - Netzwerkadapter karli Windows Forum — LAN & WAN 8 27.11.2003 14:28
Netzwerkadapter zero Windows Forum — Allgemein 4 18.04.2003 08:08


Alle Zeitangaben in MEZ/CET. Es ist jetzt 11:13 Uhr. Seite generiert in 0,063 Sekunden.

- Unsere Partner -

Copyright © 2000 – 2012 MCSEboard.de

Sprung zum Seitenanfang