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 :

Blocage For each


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Architecte de base de données
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut Blocage For each
    Bonjour,

    J'ai le script suivant (largement diffusé dans tous les exemples sur le net)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    strComputer = "TOTO"
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48)
    wscript.echo "Erreur=" & err
    For Each objItem in colItems
        Wscript.Echo "NumberOfProcessors: " & objItem.NumberOfProcessors
    Next
    Wscript.Echo "Fin"
    Ces lignes fonctionnent sur 90% de mes serveurs mais, sur certains, j'ai un blocage au niveau du "For Each" (par blocage, j'entends que le script ne rend pas la main).
    L'erreur est toujours 0 (donc après le ExecQuery) et si je mets le "For Each... Next" commentaire, je termine bien le script sur les serveurs où cela bloque.

    Ce n'est pas un problème d'accès aux serveurs car si je change la classe (par exemple, si je mets Win32_OperatingSystem) j’accède bien à la propriété Caption de Win32_OperatingSystem (par exemple) de tous mes serveurs (y compris ceux qui bloquent sur le "For Each" de la classe Win32_ComputerSystem)

    Voilà, j’espère avoir exposé clairement le phénomène. Maintenant, j'aimerais "contourner" en évitant de lancer le "For each" si je n'ai rien en retour de l'interrogation. J'ai essayé pas mal de choses mais je n'ai plus d'idée...

    Quelqu'un peut-il m'aider ?

    Merci

  2. #2
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,

    je suppose que dans une ligne précédente tu as bien
    et si tu insères entre la ligne 4 et 5 ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Wscript.Echo VarType(colItems)
    ça donne quoi ?
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  3. #3
    Membre du Club
    Profil pro
    Architecte de base de données
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    Bonjour,

    Merci de ta réponse qui fait enfin bouger mon programme.
    Oui, j'ai le "On Error resume next" mais avec ou sans, c'est pareil.

    Par contre, la ligne Vartype a répondu : 9 (puis blocage après)

    Je ne sais pas ce que cela veut dire mais c'est la premièere fois que j'ai un résultat en utilisant colItems (colItems.count plante, un if avec colItems plante, etc)

    J'espère que 9 va te parler car je reprends espoir...

    Merci

  4. #4
    Membre du Club
    Profil pro
    Architecte de base de données
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    En complément j'ai rajouté tous les tests que j'ai trouvé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Vartype=9
    IsObject=True
    IsEmpty=False
    IsNull=False
    IsArray=False
    IsDate=False
    IsNumeric=False
    TypeName=SWbemObjectSet

  5. #5
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    et les serveurs bloquants ont des points communs non partagés avec les autres comme la version de l'os ?

    ce type de problème est souvent posé par une mauvaise config DCOM du serveur appelé

    je supprimerais aussi la gestion des erreurs et normalement la ligne 3 devrait afficher en clair le n° de l'erreur
    je testerais enfin avec une autre classe win32 simple comme Win32_Keyboard
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  6. #6
    Membre du Club
    Profil pro
    Architecte de base de données
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    Sur un serveur qui bloque, cela fonctionne très bien sur une autre classe
    Sinon, sur 2 serveurs identiques, l'un fonctionne, l'autre pas. D'un autre côté, que cela ne me renvois pas l'info ne me gène pas... Ce qui me gène c'est que le script reste bloqué et ne passe pas au suivant.
    Par contre, supprimer la gestion des erreurs, tu fais cela comment ?
    Si c'est mettre "On Error resume next" en commentaire, cela ne change rien au comportement

Discussions similaires

  1. xsl:for-each avec un parametre pour select
    Par arnog dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 26/08/2008, 13h09
  2. fonction for each key .......
    Par trialrofr dans le forum ASP
    Réponses: 13
    Dernier message: 10/01/2005, 14h29
  3. apply-templates et for-each
    Par d'Oursse dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 14/05/2004, 08h38
  4. utilisation de for each
    Par billoum dans le forum ASP
    Réponses: 5
    Dernier message: 19/03/2004, 15h30
  5. [VB6] For Each ... In ...
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/02/2003, 12h56

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