MCSEboard.de MCSE Forum zu Windows XP / 2003 / 2008 Server & Windows Vista / Windows 7
Windows Forum — Scripting Alles zum Thema System Administration Scripting — Q & A zum Thema Scripting: Batch, VBS, WMI, PowerShell
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
13.07.2009, 10:53
#2
Senior Member
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
13.07.2009, 12:11
#3
Newbie
Offline
Registriert seit: 11-2008
Beiträge: 4
Hallo Danny,
danke für die Idee mit der Registry.
Zitat von
Dr Kiffer
Ich nehme an wenn du WMI-Abfragen machst, machst du die über vbs.
Ja. Danke für den Beispiel-Code!
Zitat von
Dr Kiffer
Ü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
02.09.2009, 12:41
#4
Newbie
Offline
Registriert seit: 11-2008
Beiträge: 4
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
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
03.03.2010, 13:25
#6
Expert Member
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.
Alle Zeitangaben in MEZ/CET. Es ist jetzt 11:13 Uhr. Seite generiert in 0,063 Sekunden.
- Unsere Partner -
Copyright © 2000 – 2012 MCSEboard.de