VBScript und WMI (Win32-NetworkAdapterConfiguration)
Hallo!
Ich möchte mit dem foldenden Script einige NIC-parameter anzeigen lassen:
*
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery ("Select * From Win32_NetworkAdapter WHERE NetConnectionStatus=2")
For Each objItem in colItems
strMACAddress = objItem.MACAddress
If objItem.Speed >= 1000000000 Then
strSpeedG = objItem.Speed / 1000000000
valSpeedG = " Gb/s"
Else
strSpeedM = objItem.Speed / 1000000
valSpeedM = " Mb/s"
End If
strServiceName = objItem.ServiceName
strPNPDeviceID = objItem.PNPDeviceID
if InStr(strPNPDeviceID,"&SUBSYS") > 1 Then strPNPDeviceID = MID(strPNPDeviceID,1,instr(strPNPDeviceID,"&SUBSYS")-1)
Next
Set colNetCard = objWMIService.ExecQuery ("Select * From Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objNetCard in colNetCard
If objNetCard.MACAddress = strMACAddress Then
For Each strIPAddress in objNetCard.IPAddress
If InStr(strIPAddress,".") Then
strAlles = "Aktiver LAN-Adapter:" & vbCRLF
strAlles = strAlles & "Name:" & vbTAB & vbTAB & objNetCard.Description & vbCRLF
strAlles = strAlles & "IP-Adresse:" & vbTAB & strIPAddress & vbCRLF
' strAlles = strAlles & "DefaultIPGateway:" & vbTAB & objNetCard.DefaultIPGateway & vbCRLF
' strAlles = strAlles & "IPSubnet:" & vbTAB & objNetCard.IPSubnet & vbCRLF
strAlles = strAlles & "MAC-Addresse:" & vbTAB & strMACAddress & vbCRLF
strAlles = strAlles & "PNPDeviceID:" & vbTAB & strPNPDeviceID & vbCRLF
strAlles = strAlles & "ServiceName:" & vbTAB & strServiceName & vbCRLF
If strSpeedG >= 1 Then strSp = strSpeedG & valSpeedG Else strSp = strSpeedM & valSpeedM
strAlles = strAlles & "Geschwindigkeit:" & vbTAB & strSp & vbCRLF
Wscript.Echo strAlles
End If
Next
End If
Next
Das klappt soweit korrekt.
Möchte ich auch das Standardgateway und/oder die Netzmaske anzeigen lassen(auskommentierte Zeilen) kommt folgende Fehlermeldung:
Windows Script Host
Skript: C:\Temp\Speed.vbs
Zeile: 25
Zeichen: 6
Fehler: Typenkonflikt
Code: 800A000D
Quelle: Laufzeitfehler in Microsoft VBScript
OK
Der entsprechende LAN-Adapter hat ein Standardgateway und auch eine gültige Netzmaske, die auch angezeigt wird:
ipconfig
Windows-IP-Konfiguration
Ethernet-Adapter Ethernet:
Verbindungsspezifisches DNS-Suffix: **S.local
IPv4-Adresse . . . . . . . . . . : 10.42.100.14
Subnetzmaske . . . . . . . . . . : 255.255.255.192
Standardgateway . . . . . . . . . : 10.42.100.11
Warum kann ich auf diese Parameter mittels VBscript nicht zugreifen?
Ich habe es bei verschiedenen Adaptern, mit und ohne DHCP und bei Windows 10 1607 und Windows 7 SP1 getestet. Immer das gleiche Problem.
Hat da jemand eine Idee?
Danke!
MfG
MaxMoritz
Ich möchte mit dem foldenden Script einige NIC-parameter anzeigen lassen:
*
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery ("Select * From Win32_NetworkAdapter WHERE NetConnectionStatus=2")
For Each objItem in colItems
strMACAddress = objItem.MACAddress
If objItem.Speed >= 1000000000 Then
strSpeedG = objItem.Speed / 1000000000
valSpeedG = " Gb/s"
Else
strSpeedM = objItem.Speed / 1000000
valSpeedM = " Mb/s"
End If
strServiceName = objItem.ServiceName
strPNPDeviceID = objItem.PNPDeviceID
if InStr(strPNPDeviceID,"&SUBSYS") > 1 Then strPNPDeviceID = MID(strPNPDeviceID,1,instr(strPNPDeviceID,"&SUBSYS")-1)
Next
Set colNetCard = objWMIService.ExecQuery ("Select * From Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objNetCard in colNetCard
If objNetCard.MACAddress = strMACAddress Then
For Each strIPAddress in objNetCard.IPAddress
If InStr(strIPAddress,".") Then
strAlles = "Aktiver LAN-Adapter:" & vbCRLF
strAlles = strAlles & "Name:" & vbTAB & vbTAB & objNetCard.Description & vbCRLF
strAlles = strAlles & "IP-Adresse:" & vbTAB & strIPAddress & vbCRLF
' strAlles = strAlles & "DefaultIPGateway:" & vbTAB & objNetCard.DefaultIPGateway & vbCRLF
' strAlles = strAlles & "IPSubnet:" & vbTAB & objNetCard.IPSubnet & vbCRLF
strAlles = strAlles & "MAC-Addresse:" & vbTAB & strMACAddress & vbCRLF
strAlles = strAlles & "PNPDeviceID:" & vbTAB & strPNPDeviceID & vbCRLF
strAlles = strAlles & "ServiceName:" & vbTAB & strServiceName & vbCRLF
If strSpeedG >= 1 Then strSp = strSpeedG & valSpeedG Else strSp = strSpeedM & valSpeedM
strAlles = strAlles & "Geschwindigkeit:" & vbTAB & strSp & vbCRLF
Wscript.Echo strAlles
End If
Next
End If
Next
Das klappt soweit korrekt.
Möchte ich auch das Standardgateway und/oder die Netzmaske anzeigen lassen(auskommentierte Zeilen) kommt folgende Fehlermeldung:
Windows Script Host
Skript: C:\Temp\Speed.vbs
Zeile: 25
Zeichen: 6
Fehler: Typenkonflikt
Code: 800A000D
Quelle: Laufzeitfehler in Microsoft VBScript
OK
Der entsprechende LAN-Adapter hat ein Standardgateway und auch eine gültige Netzmaske, die auch angezeigt wird:
ipconfig
Windows-IP-Konfiguration
Ethernet-Adapter Ethernet:
Verbindungsspezifisches DNS-Suffix: **S.local
IPv4-Adresse . . . . . . . . . . : 10.42.100.14
Subnetzmaske . . . . . . . . . . : 255.255.255.192
Standardgateway . . . . . . . . . : 10.42.100.11
Warum kann ich auf diese Parameter mittels VBscript nicht zugreifen?
Ich habe es bei verschiedenen Adaptern, mit und ohne DHCP und bei Windows 10 1607 und Windows 7 SP1 getestet. Immer das gleiche Problem.
Hat da jemand eine Idee?
Danke!
MfG
MaxMoritz
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 328574
Url: https://administrator.de/forum/vbscript-und-wmi-win32-networkadapterconfiguration-328574.html
Ausgedruckt am: 06.04.2025 um 21:04 Uhr
3 Kommentare
Neuester Kommentar
Hi,
E.
Edit: Schreibfehler in Code-Zeile 1 korrigiert
- benutze bitte Code-Tags! (Links im Editor "</>")
- Wenn Du mal unter Win32_NetworkAdapterConfiguration class nachschaust, dann siehst Du, dass "DefaultIPGateway" ein Array ist. Du musst es also in etwa so abfragen:
dim GWs : GWs = objNetCard.DefaultIPGateway
dim GW
for each GW in GWs
strAlles = strAlles & "DefaultIPGateway:" & vbTAB & GW & vbCRLF
next
E.
Edit: Schreibfehler in Code-Zeile 1 korrigiert