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-Key: 328574

Url: https://administrator.de/contentid/328574

Printed on: April 25, 2024 at 22:04 o'clock

Member: emeriks
emeriks Feb 06, 2017 updated at 10:55:04 (UTC)
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
Member: MaxMoritz6
MaxMoritz6 Feb 06, 2017 at 11:24:07 (UTC)
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
Member: emeriks
Solution emeriks Feb 06, 2017 at 11:27:22 (UTC)
Goto Top
Na dann mach diesen Thread hier zu.