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

Scripts/Batch Discussion :

[WMI] Filtrage de requête [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 2
    Par défaut [WMI] Filtrage de requête
    Bonjour à tous,

    Je suis novice en Powershell, j'ai fait un script qui récupère à distance des informations matériels via WMI sur des PC et je filtre la recherche.
    Le script fonctionne, sauf si filtre de recherche ne retourne qu'en théorie qu'un seul élément, dans ce cas je n'ai pas de résultat.
    Note : si la requête (modifiée) tourne localement, cela fonctionne.

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    $ListeOrdi = "C:\Test\ListeOrdi.txt"
    $Domain = "mondomaine"
    $UserName = "admin"
    $Password_non_crypte = "mdpadmin"
    $Password = convertto-securestring -String $Password_non_crypte -AsPlainText -Force
    $Credential = new-object -typename System.Management.Automation.PSCredential -argumentlist $UserName, $Password
    $ArrComputers = Get-Content $ListeOrdi
     
    ForEach ($Computer in $ArrComputers)
    { $ColItems = Get-WmiObject -Class Win32_PnPEntity -Authority "ntlmdomain:$Domain" -Credential $Credential `
    -Namespace "root\cimv2" -Computer $Computer | Where {$_.Name -like "*keyboard*"}
    write-host "Nbre elements = " $ColItems.count
    $ColItems[0..900] | Format-List Name, Status, ConfigManagerErrorCode
    }

    Me retourne pour 1 PC :
    Nbre elements = 2

    Name : Terminal Server Keyboard Driver
    Status : OK
    ConfigManagerErrorCode : 0

    Name : Standard PS/2 Keyboard
    Status : OK
    ConfigManagerErrorCode : 0


    Maintenant, je filtre avec Where {$_.Name -like "*PS/2 Keyboard*"}, et ca me retourne rien et un nombre d'élément vide "Nbre elements = "
    J'ai le même résultat avec "-Filter ..." au lieu de la requête "Where ..."

    Une idée ??

    Merci par avance

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par fzool Voir le message
    Une idée ??
    Dans ton code tu supposes de toujours recevoir un objet de type tableau.
    Dans ce cas force sa construction si le cmdlet renvoi un seul élément :

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
     $ColItems = @( Get-WmiObject  ... )

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 2
    Par défaut
    Citation Envoyé par Laurent Dardenne Voir le message
    Salut,

    Dans ton code tu supposes de toujours recevoir un objet de type tableau.
    Dans ce cas force sa construction si le cmdlet renvoi un seul élément :

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
     $ColItems = @( Get-WmiObject  ... )
    Merci ça marche !!
    Par contre, pourquoi cela fonctionne si la requête concerne l'ordinateur local ?

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fzool Voir le message
    Par contre, pourquoi cela fonctionne si la requête concerne l'ordinateur local ?
    Je ne saurais dire
    Il faut vérifier le type du résultat, et connaitre la version de PS que tu utilises.
    Avec la version 2 de PS la propriété Count n'existe que sur un tableau, avec la v3 et > elle existe par défaut sur chaque objet, justement pour éviter ce piège.

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

Discussions similaires

  1. [P6Spy] Filtrage des requêtes.
    Par AlexisB dans le forum Interfaces de programmation
    Réponses: 3
    Dernier message: 25/01/2010, 11h27
  2. [Requête]problème filtrage dans requète
    Par jcdelo dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 18/04/2007, 09h56
  3. [VB6] "Filtrage" d'une requête Oracle
    Par pom dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/10/2006, 18h21
  4. [MySQL] Filtrage par ma requête sql en fonction du résultat d'un combo box
    Par digger dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/02/2006, 17h25

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