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

adnotlegland 53 Messages postés vendredi 7 octobre 2005Date d'inscription 9 avril 2008 Dernière intervention - 4 mars 2006 à 16:49 - Dernière réponse : quentincabo 34 Messages postés vendredi 10 mars 2006Date d'inscription 26 mars 2008 Dernière intervention
- 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

adnotlegland 53 Messages postés vendredi 7 octobre 2005Date d'inscription 9 avril 2008 Dernière intervention - 4 mars 2006 à 18:47
+3
Utile
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 ??
Cette réponse vous a-t-elle aidé ?  
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 4 mars 2006 à 18:35
0
Utile
'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
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 4 mars 2006 à 19:06
0
Utile
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....
troxsa 553 Messages postés jeudi 28 novembre 2002Date d'inscription 2 octobre 2016 Dernière intervention - 4 mars 2006 à 19:25
0
Utile
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
adnotlegland 53 Messages postés vendredi 7 octobre 2005Date d'inscription 9 avril 2008 Dernière intervention - 5 mars 2006 à 06:26
0
Utile
Merci Willi, et merci Troxsa pour l'astuce avec system.net ca peut aussi etre utile. Il est bien ce petit forum
cs_gastonfinger 8 Messages postés mardi 3 mai 2005Date d'inscription 20 octobre 2008 Dernière intervention - 30 avril 2006 à 12:36
0
Utile
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
troxsa 553 Messages postés jeudi 28 novembre 2002Date d'inscription 2 octobre 2016 Dernière intervention - 30 avril 2006 à 13:13
0
Utile
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 
guillaume_2k3 1 Messages postés jeudi 16 mars 2006Date d'inscription 31 janvier 2007 Dernière intervention - 31 janv. 2007 à 09:42
0
Utile
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...
quentincabo 34 Messages postés vendredi 10 mars 2006Date d'inscription 26 mars 2008 Dernière intervention - 14 févr. 2008 à 11:17
0
Utile
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.