[VB .NET] WMI et les array [Résolu]

Messages postés
53
Date d'inscription
vendredi 7 octobre 2005
Statut
Membre
Dernière intervention
9 avril 2008
- - Dernière réponse : quentincabo
Messages postés
34
Date d'inscription
vendredi 10 mars 2006
Statut
Membre
Dernière intervention
26 mars 2008
- 14 févr. 2008 à 11:17
Bonjour a tous,

quelqu'un pourrait-il me donner un bout de code pour recuperer une adresse ip (par exemple) par les wmi ??
Mon probleme c'est que la valeur renvoyé est une system.string[] et que je n'arrive pas à la recuperer
ex:

Dim Ms As New ManagementScope("\root\cimV2")
Dim Requete As New ObjectQuery("SELECT * FROM win32_networkadapterconfiguration")
Dim recherche As New ManagementObjectSearcher(Ms, Requete)

Ms.Connect()

Dim col As ManagementObjectCollection = recherche.Get
If Ms.IsConnected Then
For Each obj As ManagementObject In col
For Each propriete As PropertyData In obj.Properties
If Not propriete.Value Is Nothing Then RichTextBox1.Text +propriete.Name + " " + propriete.Value.ToString + ControlChars.CrLf
End If
Next
Next

End If

et là toutes les valeurs contenu dans des array affichent system.string[] mais pour les autres ca marche niquel !!!

Merci pour le coup de main
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
53
Date d'inscription
vendredi 7 octobre 2005
Statut
Membre
Dernière intervention
9 avril 2008
3
Merci
A force de tatonner j'avais trouver un bout de code du style (pour reprendre ton exemple) :

Dim mos
As

New
ManagementObjectSearcher(
"select ipaddress from win32_networkadapterconfiguration where index = 1"
)

Dim
monIP() As

String
Dim
sIp
As

String

For
Each
mo
As
ManagementObject
In
mos.Get
For each propriete as propertydata in mo.properties
monIP = propriete.value

Next
Next

mos.Dispose() //question : pourquoi le detruire ??


sIp = monIP(0).tostring

qu'en penses tu ??

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 139 internautes nous ont dit merci ce mois-ci

Messages postés
2382
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
17
0
Merci
'Lut,
C'est normal que tu obtiennes ce résultat, la propriété IpAddress renvoie un tableau et non un string.

Voici un exemple avec managment, adapte selon ton besoin avec ta richtextbox.



Dim mos
As

New
ManagementObjectSearcher(
"select ipaddress from win32_networkadapterconfiguration"
)

Dim
monIP() As

String
Dim
sIp
As

String

For
Each
mo
As
ManagementObject
In
mos.Get
monIP = mo("ipaddress"
)
Next

mos.Dispose()



For i
As

Integer
= 0
To
monIP.Length - 1
sIp += monIP(i) & "."
Next

sIp = sIp.Remove(sIp.Length - 1)

Si est sous vb2005 ceci doit marcher
dim IP as sting = system.Net.Dns.GetHostEntry(Net.Dns.GetHostName).AddressList.GetValue(0).ToString
Messages postés
2382
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
17
0
Merci
sa me parait correct.
on ne détruit pas l'objet mos ! on libère simplement les ressources utilisées par celui-ci. après c'est au GarbageCollector de faire son travail....
Messages postés
553
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
2 octobre 2016
0
Merci
Pour recuperer l'adresse IP voila comment je fait
'Example en Wmi
imports System
imports System.Management

<hr size="2" width="100%">Module Module1
Public Shared Sub Main()
Dim query as ManagementObjectSearcher = new _
ManagementObjectSearcher("SELECT * FROM
WIN32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'")
Dim queryCollection as ManagementObjectCollection = query.Get()
Dim mo as ManagementObject
For Each mo In queryCollection
Dim addresses() as string = CType(mo("IPAddress"), string())
Dim defaultgateways() as string = CType(mo("DefaultIPGateway"),
string())


Console.WriteLine("Network Card: {0}", mo("Description"))
Console.WriteLine(" MAC Address: {0}", mo("MACAddress"))


Dim ipaddress as string
For Each ipaddress In addresses
Console.WriteLine(" IP Address: {0}", ipaddress)
Next


Dim gateway as string
For Each gateway In defaultgateways
Console.WriteLine(" Gateway: {0}", gateway)
Next
Next
End Sub
End Module
<hr size="2" width="100%">Encore une autre methode plus courte,
<hr size="2" width="100%"> Dim varHostEntry As System.Net.IPHostEntry
varHostEntry = System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName())
Dim varAnAddress As System.Net.IPAddress

For Each varAnAddress In varHostEntry.AddressList
MsgBox(varAnAddress.ToString())
Next

<hr size="2" width="100%">Pour un reseau local je fait autrement,

Imports System.Net


Public Function ListeAdressesIP() As String
Dim strListe As String
Dim objAdresse As Net.IPAddress
Dim objHote As Net.IPHostEntry

objHote = Dns.Resolve(Dns.GetHostByName("LocalHost").HostName)
For Each objAdresse In objHote.AddressList() strListe IIf(strListe "", "", strListe & "#") & objAdresse.ToString()
Next
Return strListe
End Function

Voila j'espere que tu auras le choix
http://www.troxsa.info/Code VB.net
Messages postés
53
Date d'inscription
vendredi 7 octobre 2005
Statut
Membre
Dernière intervention
9 avril 2008
0
Merci
Merci Willi, et merci Troxsa pour l'astuce avec system.net ca peut aussi etre utile. Il est bien ce petit forum
Messages postés
8
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
20 octobre 2008
0
Merci
Bonjour Je suis sur un logiciel de gestion de trafic sur un grand réseau
j'aimerai utilié le wmi pour ramener toutes les informations (équipement ) de ce reseau
mais je n'ai jamais utilisé le wmi!!!
     merci de l'aide
Messages postés
553
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
2 octobre 2016
0
Merci
salut gastonfinger  je serais toi je ferais un nouveau topic !
et pour repondre a moitier a ta question : sur mon site il y a des exemples

http://www.troxsa.info/
Code Vb.net 
Messages postés
1
Date d'inscription
jeudi 16 mars 2006
Statut
Membre
Dernière intervention
31 janvier 2007
0
Merci
Bonjour  à tous,

Je débute en VB, je ne suis pas développeur et je cherche à faire un script VB qui change la passerelle des machines de mon parc à distance.

J'utilise WMI avec VB mais dès que je met du "code wmi" il n'est pas reconnu dans VB.
quand je copie-colle vos sources dans vb 2005 express, les noms de classe sont soulignés et j'ai des erreurs style
Erreur    3    Type 'ManagementScope' non défini.   

je suppose qu'il faut importer une classe, mais je ne sais pas comment procéder en VB ni quelle classe importer.

merci de votre aide...
Messages postés
34
Date d'inscription
vendredi 10 mars 2006
Statut
Membre
Dernière intervention
26 mars 2008
0
Merci
as-tu ajouter le composant system.management dans les options du Visual Studio 2005???

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.