KarstenMo 10 Geschrieben 13. Juli 2009 Melden Teilen Geschrieben 13. Juli 2009 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 Zitieren Link zu diesem Kommentar
Dr Kiffer 10 Geschrieben 13. Juli 2009 Melden Teilen Geschrieben 13. Juli 2009 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 Zitieren Link zu diesem Kommentar
KarstenMo 10 Geschrieben 13. Juli 2009 Autor Melden Teilen Geschrieben 13. Juli 2009 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 Zitieren Link zu diesem Kommentar
KarstenMo 10 Geschrieben 2. September 2009 Autor Melden Teilen Geschrieben 2. September 2009 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 Zitieren Link zu diesem Kommentar
otta12 10 Geschrieben 3. März 2010 Melden Teilen Geschrieben 3. März 2010 Hallo, wenn ich den code verwenden möchte was muss ich tun ? Einfach als *.vb abspeichern und ausführen funktioniert ja nicht .... Gruß AO :) Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 3. März 2010 Melden Teilen Geschrieben 3. März 2010 VB Scripte speichert man als *.vbs Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.