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

VBScript Discussion :

[VBS WMI] HotFix Windows + Excel


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Par défaut [VBS WMI] HotFix Windows + Excel
    Bonjour,
    je fai un script chargé de me récupéré pas mal d'info sur des machines distantes (processus et services en cours d'exec...) et j'ai un problème en ce qui concerne la vérification des correctifs présents sur les machines. En effet, lorsque j'ai le résultat mise en page dans Excel de ma requete WMI j'ai quelques chose de tres étrange (voir pj). On dirai qu'il me test plusieur fois le meme correctif. Ce que j'aimerais, c'est que le script test le contenu dans la variable "correctif" en le comparant au résultat de la requete wmi afin de voir si il est bien présent sur la machine, et qu'en fonction du résultat il insere un "OK" ou un "NOK" dans mon excel ds des cellules spécifique de mon excel...
    Je ne voi pa mon erreur pouvez vous l'aidez svp?
    Bonne journée

    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
    36
    37
    38
    39
     
    line = objTextFile.Readline
    insertion = Split(line,",",-1, 1)
    StrNomdemachine = insertion(0)
    strComputer = insertion(1)
    proco = insertion(2)
    service = insertion(3)
    correctif = insertion(5)
    insertionprocessus = Split(proco,";",-1, 1)
    insertionservice = Split(service,";",-1, 1)
    insertioncorrectif = Split(correctif,";",-1, 1)
     
    ' + les autres déclarations pour la création de mon excel et l'ouverture du CSV
    ' contenant mes machines, processus, services et correctif a tester!
     
    For Each correctif in insertioncorrectif
     
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colQuickFixes = objWMIService.ExecQuery _
        ("Select * from Win32_QuickFixEngineering")
     
            For Each objQuickFix in colQuickFixes
     
            if correctif = objQuickFix.HotFixID then
                    feuille.Range("F" & cptcorrect) = correctif
                    feuille.Range("G" & cptcorrect) = "OK"
                    feuille.Range("F" & cptcorrect).Interior.ColorIndex = 4
                    feuille.Range("G" & cptcorrect).Interior.ColorIndex = 4
                    else
                    feuille.Range("F" & cptcorrect) = correctif
                    feuille.Range("G" & cptcorrect) = "NOK"
                    feuille.Range("F" & cptcorrect).Interior.ColorIndex = 3
                    feuille.Range("G" & cptcorrect).Interior.ColorIndex = 3
     
                    end if
            cptcorrect = cptcorrect + 1
            Next
    next
    Images attachées Images attachées  

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    tu peux essayer cette adaptation

    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
    Dim Verif As Boolean
     
    For Each correctif In insertioncorrectif
     
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colQuickFixes = objWMIService.ExecQuery _
        ("Select * from Win32_QuickFixEngineering")
     
            Verif = False
     
            For Each objQuickFix In colQuickFixes
                If correctif = objQuickFix.HotFixID Then Verif = True
            Next
     
            cptcorrect = cptcorrect + 1
     
            If Verif = True Then
                    feuille.Range("F" & cptcorrect) = correctif
                    feuille.Range("G" & cptcorrect) = "OK"
                    feuille.Range("F" & cptcorrect).Interior.ColorIndex = 4
                    feuille.Range("G" & cptcorrect).Interior.ColorIndex = 4
                    Else
                    feuille.Range("F" & cptcorrect) = correctif
                    feuille.Range("G" & cptcorrect) = "NOK"
                    feuille.Range("F" & cptcorrect).Interior.ColorIndex = 3
                    feuille.Range("G" & cptcorrect).Interior.ColorIndex = 3
            End If
     
    Next


    puisque tu vérifies des correctifs à partir de leur nom, tu pourrais aussi ecrire directement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       Set colQuickFixes = _
        objWMIService.ExecQuery("Select * from Win32_QuickFixEngineering WHERE HotFixID='" _
        & Correctif & "'")
    pour ne pas avoir à boucler sur tous les patchs existants.
    il te resterait juste à gérer les correctifs non trouvés. par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If Not colQuickFixes Is Nothing Then


    je n'ai pas testé mais ça pourrait donner quelque chose comm ça


    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
    For Each Correctif In insertioncorrectif
     
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colQuickFixes = _
        objWMIService.ExecQuery("Select * from Win32_QuickFixEngineering WHERE HotFixID='" _
        & Correctif & "'")
     
                If Not colQuickFixes Is Nothing Then
                    feuille.Range("F" & cptcorrect) = Correctif
                    feuille.Range("G" & cptcorrect) = "OK"
                    feuille.Range("F" & cptcorrect).Interior.ColorIndex = 4
                    feuille.Range("G" & cptcorrect).Interior.ColorIndex = 4
                    Else
                    feuille.Range("F" & cptcorrect) = Correctif
                    feuille.Range("G" & cptcorrect) = "NOK"
                    feuille.Range("F" & cptcorrect).Interior.ColorIndex = 3
                    feuille.Range("G" & cptcorrect).Interior.ColorIndex = 3
                 End If
     
    Next

    bonne soiree
    michel

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Par défaut Résolution et remerciements
    Merci beaucoup, l'utilisation de la variable booleenne resoud parfaitement le probleme !
    Pour l'autre solution j'ai essayé mais je me retrouvais avec une nouvelle erreur d'affichage donc, je me contenterai de la premiere solution.
    Encore merci et bonne fin de journée !

    J.christophe

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

Discussions similaires

  1. [VBS-WMI]Tester en WMI si un serveur est UP ?
    Par kueisaho dans le forum VBScript
    Réponses: 8
    Dernier message: 06/04/2006, 10h58
  2. Compatibilité WMI et windows 2000 server
    Par kasjacques dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 22/11/2005, 08h51
  3. WMI et Windows server 2000
    Par kasjacques dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 17/10/2005, 22h41
  4. Problème de connexion WMI avec Windows XP
    Par Against Me! dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 24/05/2005, 09h28
  5. [Windows]Excel et J2EE
    Par quemener dans le forum Développement Web en Java
    Réponses: 23
    Dernier message: 04/02/2005, 14h24

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