IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

ajouter un élément via le service WMI


Sujet :

VB.NET

  1. #1
    Membre éclairé Avatar de LesLemmings
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 302
    Par défaut ajouter un élément via le service WMI
    Bonjour,

    Je voudrais pouvoir créer un port via le service WMI (en vb.net framework 2.0) mais je ne sais pas comment faire. Ce qui me gène surtout c’est de pouvoir ajouté un élément dans un service WMI.

    Merci.

  2. #2
    Membre éclairé Avatar de LesLemmings
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 302
    Par défaut
    Personne ne me répond.
    Voici ce que j’ai codé pour pouvoir ajouter un port. Toutefois, cette solution ne me convient pas car il faut que je copie un objet existant pour pouvoir en rajouter un nouveau. Ce qui ne pas génial car comment je fais quand il n’a pas de port présent ?
    Si vous avez une meilleure solution j’aimerais bien la connaître.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    Dim connexion As System.Management.ConnectionOptions = New ConnectionOptions()
    Dim nomMachine As String = "."
    Dim managementScope As System.Management.ManagementScope
    Dim objQuery As System.Management.ObjectQuery 
    Dim query As ManagementObjectSearcher 
    Dim queryCollection As ManagementObjectCollection = Nothing
    Dim objNewPort As ManagementObject
    Try
        'connexion
        managementScope = New System.Management.ManagementScope("\\" + nomMachine + "\root\cimv2", connexion)
        objQuery = New System.Management.ObjectQuery("Select * from Win32_TCPIPPrinterPort")
        query = New ManagementObjectSearcher(managementScope, objQuery)
        'Récupération des objets existant
        queryCollection = query.Get()
     
        'Récupération d'un objet
        objNewPort = query.Get()(0)
     
        'Création de l'objet à ajouter
        objNewPort("Name") = "IP_" & "10.10.10.10"
        objNewPort("Protocol") = 2
        objNewPort("HostAddress") = "10.10.10.10"
        objNewPort("PortNumber") = "XXX"
        objNewPort("SNMPEnabled") = True
        objNewPort("Queue") = "XXXXX"
        objNewPort("SNMPCommunity") = "xxxxxxx"
        objNewPort("SNMPDevIndex") = 1
     
        'ajout de l'objet dans le service
        objNewPort.Put()

  3. #3
    Membre éclairé Avatar de LesLemmings
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 302
    Par défaut
    ça fais deux jours que je suis dessus et je n'arrive toujours pas à trouver une solution convenable. J'ai réussi à récupérer les propriétés de la classe (Win32_TCPIPPrinterPort) sans copier un objet existant (via les 3 premières lignes du code). Mais je ne sais pas comment je peux affecter cet objet dans le wmi32_TCPIPPrinterPort. Avez-vous une idée?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim p As New ManagementPath("Win32_TCPIPPrinterPort")
    Dim opt As New ObjectGetOptions(Nothing, TimeSpan.MaxValue, True)
    Dim c As New ManagementClass(p, opt)
     
    c("Name") = "IP_" & "X.X.X.X"
    c("Protocol") = 2
    c("HostAddress") = "X.X.X.X"
    c("PortNumber") = "X"
    c("SNMPEnabled") = True
    c("Queue") = "XXXXXXXX"
    c("SNMPCommunity") = "public"
    c("SNMPDevIndex") = 1
    Merci.

  4. #4
    Membre éclairé Avatar de LesLemmings
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 302
    Par défaut
    Vu que personne ne me répond je me réponds à moi même.
    J'ai enfin fini par trouver comment il fallait faire pour ajouter un objet dans une classe appartenant au service WMI.
    Si on insère l’objet (méthode put) sans lui affecter une option l’erreur suivante se produit :
    Un objet corrigé ne peut pas être placé sauf si WBEM_FLAG_USE_AMENDED_QUALIFIERS a été spécifié.
    Donc il est important d’insérer l’objet de cet façon newInstance.Put(poptions) avec ‘poptions’ ayant un type ‘UpdateOrCreate’ et un ‘UseAmendedQualifiers’ à vrai.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    'VARIABLES
    Dim mangementClasse As New ManagementClass("Win32_TCPIPPrinterPort") 'Représente une classe WMI
    Dim newInstance As ManagementObject = Nothing 'Représente un nouvel objet de de la classe 'Win32_TCPIPPrinterPort'
    Dim poptions As PutOptions = New PutOptions()
     
    Try
        'Création d'une nouvelle instance appartenat à la classe 'Win32_TCPIPPrinterPort' 
        newInstance = mangementClasse.CreateInstance()
     
        'Affectation des valeurs pour les propriétés voulus
        newInstance("Name") = "IP_" & "X.X.X.X"
        newInstance("Protocol") = 2
        newInstance("HostAddress") = "X.X.X.X"
        newInstance("PortNumber") = "X"
        newInstance("SNMPEnabled") = True
        newInstance("Queue") = "XXXXXXXXX"
        newInstance("SNMPCommunity") = "public"
        newInstance("SNMPDevIndex") = 1
     
        'Affecation du type doption choisie. Ici en mode Mise à jour ou création.
        'Afin de pouvoir ajouter un nouvel objet dans la classe 'Win32_TCPIPPrinterPort'
        poptions.Type = PutType.UpdateOrCreate
        poptions.UseAmendedQualifiers = True
     
        'Ajout de l'objet dans le service WMI
        newInstance.Put(poptions)
     
     
    Catch ex As Exception
         MessageBox.Show("Erreur dans l'appel WMI : " & ex.Message)
    Finally
         newInstance.Dispose()
         mangementClasse.Dispose()
    End Try

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/03/2015, 18h31
  2. Ajout term dans termstore via web service sur webapp anonyme
    Par James Dt dans le forum Développement Sharepoint
    Réponses: 1
    Dernier message: 05/07/2013, 09h27
  3. Réponses: 4
    Dernier message: 13/08/2009, 18h42
  4. Réponses: 6
    Dernier message: 10/07/2004, 12h19
  5. [xsl] Ajouter 1 élément à la page xml
    Par ametisse dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 10/03/2003, 12h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo