maxmoritz6
Goto Top

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

Content-ID: 328574

Url: https://administrator.de/forum/vbscript-und-wmi-win32-networkadapterconfiguration-328574.html

Ausgedruckt am: 06.04.2025 um 21:04 Uhr

emeriks
emeriks 06.02.2017 aktualisiert um 11:55:04 Uhr
Goto Top
Hi,
  1. benutze bitte Code-Tags! (Links im Editor "</>")
  2. 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
MaxMoritz6
MaxMoritz6 06.02.2017 um 12:24:07 Uhr
Goto Top
Hi,
das ging ja schnell.
Ich hatte auch schon die Vermutung und habe es versucht zu programmieren. Ging aber auch nicht, da ich da wohl einen anderen Fehler eingebaut hatte!
Jetzt klappt es!
Vielen Dank!
Gruß, MaxMoritz
emeriks
Lösung emeriks 06.02.2017 um 12:27:22 Uhr
Goto Top
Na dann mach diesen Thread hier zu.