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 :

Requête sur plusieurs PC


Sujet :

VBScript

  1. #1
    Invité
    Invité(e)
    Par défaut Requête sur plusieurs PC
    Bonjour j'aimerais faire un petit script en fonction du numéro de série de l'appareil....
    actuellement j'ai mon petit script qui fonctionne bien avec l'info suivante donc pour un numéro de série..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if objSerial = "H76Mjk71" Then
    J'aimerais le faire pour une série de numéro...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if objSerial = "H58YTG2" & OR & "H54TRF7" ainsi du suite?
    Idéalement j'aimerais faire une double recherche en faisant en sorte que le nom du PC doit obligatoirement commencer par 001


    Merci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colBIOS = objWMIService.ExecQuery _
        ("Select * from Win32_BIOS")
    For each objBIOS in colBIOS
        objSerial = objBIOS.SerialNumber
    Next
    'Wscript.Echo "Serial Number: " & objSerial
    if objSerial = "YH76YH7" Then
    Wscript.Echo "Exécute un code" 
    Else
    Wscript.Echo "Non exécute pas le code"
    end if
    Dernière modification par Invité ; 05/03/2013 à 21h23.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bon je comprend pas la logique...

    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
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colBIOS = objWMIService.ExecQuery _
        ("Select * from Win32_BIOS")
    For each objBIOS in colBIOS
        objSerial = objBIOS.SerialNumber
    Set objWMISvc = GetObject( "winmgmts:\\.\root\cimv2" )
    Set colItems = objWMISvc.ExecQuery( "Select * from Win32_ComputerSystem", , 48 )
    For Each objItem in colItems
        strComputerName = objItem.Name
    Next
     
    if objSerial = "YT654G6" And strComputerName = "PCName" Then
    Wscript.Echo "Yes" 
     
    Else
    Wscript.Echo "No"
    wscript.echo strComputerName
    wscript.echo objSerial
    End If
    Next
    objSerial et PCName sont bien énoncé dans le echo or pourquois je ne suis pas dans le echo "yes"

    Merci du coup de main...en principe ca m'aiderait dans la solution

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    Salut

    En modifiant l'endroit de vérification de la condition, chez moi cela fonctionne
    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
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colBIOS = objWMIService.ExecQuery _
        ("Select * from Win32_BIOS")
    For each objBIOS in colBIOS
        objSerial = objBIOS.SerialNumber
    	Set objWMISvc = GetObject( "winmgmts:\\.\root\cimv2" )
    	Set colItems = objWMISvc.ExecQuery( "Select * from Win32_ComputerSystem", , 48 )
     
    	For Each objItem in colItems
    		strComputerName = objItem.Name
    		if objSerial = "C3NML4J" And strComputerName = "USER-PC" Then
    			Wscript.Echo "Yes" 
    			Else
    			Wscript.Echo "No"
    			wscript.echo strComputerName
    			wscript.echo objSerial
    		End If
    	Next
     
    Next
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

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

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    bonjour,
    Idéalement j'aimerais faire une double recherche en faisant en sorte que le nom du PC doit obligatoirement commencer par 001
    que veux-tu faire exactement et notamment qu'entends-tu par "double recherche" ?
    le 1er critère est un nom de PC commençant par 001, ok
    et le second ?
    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

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci pour l'aide...

    ProgElecT...Je vois pas dans mon cas que je change le nom du bios ou le nom du PC j'arrive toujours j'arrive toujours à la condition "NO" or si mes 2 conditions sont vrai je devrais arriver à YES???

    Omen999...Oui effectivement le no du PC doit commencer par 001 pour le premier critère...le second critère est que le numéro du bios de la machine doit être compris dans une série de 32 numéros...NM2345D5...HY765G6...ainsi de suite.

    L'idée est que je veux appliquer un script sur une série de PC identifié par 001-"Numéro du bios" (ie: 001-NM2345D5, 001-HY765G6, etc)

    Donc la requête est de chercher les PC commencant par 001 dans leur nom ensuite "préciser" avec le reste du nom qui est le numéro du bios.


    Voilà

    merci

  6. #6
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    Salut (re)
    Citation Envoyé par JFMichaud Voir le message
    Merci pour l'aide...

    ProgElecT...Je vois pas dans mon cas que je change le nom du bios ou le nom du PC j'arrive toujours j'arrive toujours à la condition "NO" or si mes 2 conditions sont vrai je devrais arriver à YES???
    .............
    Voilà

    merci
    les modifications de la ligne if objSerial = "C3NML4J" And strComputerName = "USER-PC" Then ne m'a servi qu'à des fins de tests du code.
    L'intérêt de ma proposition étant l'endroit ou devait être fait la condition (dans la boucle For Each objItem in colItems ....... Next non pas à sa suite.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bon j'ai changé quelque peu...

    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
    strComputer = "."
    Dim WshNetwork
    Set WshNetwork = CreateObject("WScript.Network")
    ComputerName = WshNetwork.ComputerName
     
    Dim Prefix, PrefixMatch
    Prefix = LCase(Left(ComputerName, 4))
     
    PrefixMatch = (Prefix = "001-")
    'Bios
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS",,48)
    For Each objItem in colItems
    strSvcTag = objItem.SerialNumber
     
    Next
     
    If PrefixMatch and (strSvcTag = "H65MPJ8") Or (strSvcTag = "H76MLQ1") Then
    Wscript.Echo "Yes" 
    			wscript.echo ComputerName
    			wscript.echo strSvcTag
    Else
    Wscript.Echo "No" 
    End If
    Mes tests préliminaires me disent que ça fonctionne!!!


    La seule chose que je trouve lourd c'est cette notion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If PrefixMatch and (strSvcTag = "H65MPJ8") Or (strSvcTag = "H76MLQ1") Then
    Au sens ou je dois inscrire le strSvcTag pour 35 ordinateurs...y a pas une autre option?


    Me reste à tester le tout a plus grande échelle. En soi est ce logique comme code?


    Merci

  8. #8
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Bonjour,

    Pour ne pas avoir à rentrer 35 fois le test de nom du serviceTag, tu peux utiliser cette fonction qui teste la présence d'une chaine dans un tableau de chaines :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function StrInArr(strIn, arrIn)
    	Dim strTmp, boolOut
    	boolOut = False
    	For Each strTmp In arrIn
    		If StrComp(strTmp, strIn, vbTextCompare) = 0 Then boolOut = True
    	Next
    	StrInArr = boolOut
    REM End Function
    Utilisation de la fonction dans ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    arrSvcTags=Array("H65MPJ8", "H76MLQ1", "BLABLA", "...")
    '...
    If PrefixMatch and StrInArr(arrSvcTags) = True Then
    '...
    End If
    Bonne continuation

  9. #9
    Invité
    Invité(e)
    Par défaut
    Merci Pitchalov...

    C'est exactement ce que j'essayait de dire...j'ai regardé ton explication mais je ne suis incapable encore de l'insérer dans mon dernier code

    J'arrive avec l'erreur "nombre d'arguments ou affectation de propriété incorrects: StrInArr code 800A1C2

    en référence à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If PrefixMatch and StrInArr(arrSvcTags) = True Then

    Merci

  10. #10
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Oula oui effectivement, je ne me suis pas relu avant de valider ma réponse.
    La fonction prend en entrée 2 paramètres :
    1 - la chaine à rechercher dans le tableau
    2 - le tableau.
    Dans l'exemple que je t'ai donné, seul le tableau a été mis en paramètre, ce qui ne pouvait pas fonctionner.
    Voici donc la ligne sans erreur pour l'utilisation de la fonction dans ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If PrefixMatch and StrInArr(strSvcTag, arrSvcTags) = True Then
    Bonne continuation

  11. #11
    Invité
    Invité(e)
    Par défaut
    Oh...effectivement je viens de remplacer avec ton changement et là tout fonctionne correctement

    Merci pour vos solutions

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

Discussions similaires

  1. Requête sur plusieurs tables
    Par sta_schmitt dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/03/2006, 13h54
  2. Requéte sur plusieurs tables
    Par polux23 dans le forum Requêtes
    Réponses: 11
    Dernier message: 23/02/2006, 23h00
  3. [requête sur plusieurs bases]
    Par viny dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/02/2006, 14h18
  4. Requête sur plusieurs bases de données
    Par Oluha dans le forum ASP
    Réponses: 8
    Dernier message: 14/10/2005, 14h57
  5. Requête sur plusieurs tables
    Par drinkmilk dans le forum Langage SQL
    Réponses: 8
    Dernier message: 11/07/2005, 12h25

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