TUTOS.EU

Lister les cartes réseaux en Vbs

Comment lister les cartes réseaux en VbScript

On utilise ici la classe Win32_NetworkAdapter et on ne garde que les cartes de type Ethernet 802.3 avec la propriété NetEnabled à True ou false.
Une carte Ethernet 802.3 peut très bien être une carte wifi.

La méthode enable ou disable permet d'activer ou non la carte réseau.

Option Explicit
'2015 02 02 version
'List network cards with connected or Disconnected state

'http://msdn.microsoft.com/en-us/library/gg196652%28v=vs.85%29.aspx

Dim strComputer
Dim objWMIService, colItems
Dim objItem

Wscript.echo "Liste des cartes réseaux connectées ou désactivées :"

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter Where AdapterType = 'Ethernet 802.3'")
'Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter Where NetEnabled = True AND AdapterType = 'Ethernet 802.3'")

'We look for the firt available Ethernet network card GUID
For Each objItem in colItems

	If (objItem.NetEnabled = True) Or (objItem.NetEnabled = False) Then 'Quand une carte est désactivée, elle ne retourne rien quand on interroge .NetEnabled A désactivée par contre elle retourne false, et si elle est connectée elle retourne true
		Wscript.Echo "NetConnectionId: " & objItem.NetConnectionId
		Wscript.Echo VbTab & "Name : " & objItem.Name
		Wscript.Echo VbTab & "ProductName : " & objItem.ProductName
		Wscript.Echo VbTab & "MACAddress : " & objItem.MACAddress
		Wscript.Echo VbTab & "Manufacturer : " & objItem.Manufacturer
		Wscript.Echo VbTab & "GUID : " & objItem.GUID
		Wscript.Echo VbTab & "Description : " & objItem.Description
		Wscript.Echo VbTab & "AdapterType : " & objItem.AdapterType
		Wscript.Echo VbTab & "AdapterTypeID : " & objItem.AdapterTypeID
		Wscript.Echo VbTab & "NetEnabled : " & objItem.NetEnabled
		Wscript.Echo VbTab & "PNPDeviceID : " & objItem.PNPDeviceID
		
		'Wscript.Echo "Availability : " & objItem.Availability
		
		Wscript.Echo ""
		'objItem.Disable 'In order to disable the network card
		'Exit for
	
	End If

Next
Set objWMIService = Nothing
Lien vers le fichier : cliquez ici Copier le code

Ici on utilise la classe Win32_NetworkAdapter qui permet par exemple de désactiver la carte réseau et d'avoir son GUID puis la classe Win32_NetworkAdapterConfiguration pour avoir l'adresse ip.

On fait le lien entre les 2 avec l'adresse MAC.

Option Explicit
'2015 02 02 version
'List network cards with connected or Disconnected state

'http://msdn.microsoft.com/en-us/library/gg196652%28v=vs.85%29.aspx

Dim strComputer
Dim objWMIService, colItems
Dim objItem
Dim colNetCard, objNetCard, strIPAddress
Dim MaLigne

Dim dicAdressesMAC, varMesCles, varCompteur 'Pour un dictionnaire qui va contenir la liste des adresses MAC
set dicAdressesMAC = CreateObject("Scripting.Dictionary")
	

Wscript.echo "Liste des cartes réseaux connectées ou désactivées :"

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter Where AdapterType = 'Ethernet 802.3'")
'Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter Where NetEnabled = True AND AdapterType = 'Ethernet 802.3'")

'We look for the firt available Ethernet network card GUID
For Each objItem in colItems

	If (objItem.NetEnabled = True) Or (objItem.NetEnabled = False) Then 'Quand une carte est désactivée, elle ne retourne rien quand on interroge .NetEnabled A désactivée par contre elle retourne false, et si elle est connectée elle retourne true
		Wscript.Echo "NetConnectionId: " & objItem.NetConnectionId
		Wscript.Echo VbTab & "Name : " & objItem.Name
		Wscript.Echo VbTab & "ProductName : " & objItem.ProductName
		Wscript.Echo VbTab & "MACAddress : " & objItem.MACAddress
		Wscript.Echo VbTab & "Manufacturer : " & objItem.Manufacturer
		Wscript.Echo VbTab & "GUID : " & objItem.GUID
		Wscript.Echo VbTab & "Description : " & objItem.Description
		Wscript.Echo VbTab & "AdapterType : " & objItem.AdapterType
		Wscript.Echo VbTab & "AdapterTypeID : " & objItem.AdapterTypeID
		Wscript.Echo VbTab & "NetEnabled : " & objItem.NetEnabled
		Wscript.Echo VbTab & "PNPDeviceID : " & objItem.PNPDeviceID
		

		'Si l'adresse MAC n'est par référencée, on la stocke dans le dictionnaire
		If Len(objItem.MACAddress) > 0 Then
			if dicAdressesMAC.Exists(objItem.MACAddress) then
				'Do Nothing
			else
				dicAdressesMAC.Add objItem.MACAddress, objItem.NetConnectionId 'La clé est l'adresse MAC. La valeur le nom de la carte réseau
			end if		
		End If

		'Wscript.Echo "Availability : " & objItem.Availability
		
		Wscript.Echo ""
		'objItem.Disable 'In order to disable the network card
		'Exit for
	
	End If

Next
Set objWMIService = Nothing

'Affichage du contenu du dictionnaire
'Wscript.Echo "Résumé des adresses MAC des cartes réseau connectées :"
'varMesCles=dicAdressesMAC.keys
'For varCompteur=0 To ubound(varMesCles)
	'Wscript.echo (varMesCles(varCompteur)) & " : " & dicAdressesMAC.item(varMesCles(varCompteur)) 'On affiche dans un premier temps la clé qui est ici l'adresse MAC puis la valeur soit le nom de la carte réseau
'Next
'Wscript.Echo ""


'On se sert maintenant de la classe Win32_NetworkAdapterConfiguration pour récupérer les informations comme l'adresse IP. C'est l'adresse MAC précédemment récupérée qui sert d'identifiant unique
Wscript.Echo "Affichage des adresses IP des cartes réseau avec la priorite des cartes"
Wscript.Echo "Pour la priorite plus le chiffre est bas et plus la carte est prioritaire"
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

'regValueDataMetric = "35"

Set colNetCard = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

For Each objNetCard in colNetCard
	For Each strIPAddress in objNetCard.IPAddress
		if dicAdressesMAC.Exists(objNetCard.MACAddress) Then 'Si l'adresse MAC a été repérée avant
			MaLigne = objNetCard.Description & VbTab & "IP " & strIPAddress & VbTab & "MAC : " & objNetCard.MACAddress & VbTab & "Priorite " & objNetCard.IPConnectionMetric
			Wscript.Echo MaLigne
			'objNetCard.SetIPConnectionMetric(regValueDataMetric)
		End If	
	Next
Next
Lien vers le fichier : cliquez ici Copier le code

Remarque

Comme montré dans l'article 4487, en plus de l'adresse MAC, on peut aussi faire le lien entre la classe Win32_NetworkAdapter et NetworkAdapterConfiguration avec le GUID de la carte réseau

Pages Web

Site WebDescription
Msdn.microsoft.comWin32_NetworkAdapter class
Msdn.microsoft.comWin32_NetworkAdapterConfiguration class

2