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 :

Lire une seule info d'une commande qui en renvoie plusieurs [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre actif Avatar de berrichon
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Points : 248
    Points
    248
    Par défaut Lire une seule info d'une commande qui en renvoie plusieurs
    Bonjour
    Voici une question de newbie en scripting qui à les yeux qui brule a force de chercher dans les différents tuto la commande tellement basique que personne ne prend le temps de la documenter.
    Le truc est tout con : je fait un et j'obtiens ces lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Name                Site                 ServerRole  Edition     AdminDisplayVe
                                                                     rsion
    ----                ----                 ----------  -------     --------------
    SYD-DC1             Premier-Site-par-... Mailbox,... Standard    Version 8.0...
    SYD-EX2             Premier-Site-par-... Mailbox,... Standard    Version 8.0...
    Moi le seul truc con qui m'intéresse c'est obtenir SYD-DC1...

    Désolé d'embetter la communauté avec une question aussi idiote.

  2. #2
    Expert éminent
    Avatar de shawn12
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2006
    Messages
    3 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2006
    Messages : 3 368
    Points : 6 800
    Points
    6 800
    Par défaut
    Tu peux faire comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    get-exchangeserver | find "SYD-DC1"
    Maitrisez toutes les subtilités de Windows 8 en lisant la FAQ Windows 8. N'hésitez pas à proposer vos Q/R.
    _ _ _
    Découvrez toutes les facettes de Windows 7 et maitrisez toutes ses fonctionnalités grâce au livre Windows 7 Avancé

  3. #3
    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
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par berrichon
    Désolé d'embetter la communauté avec une question aussi idiote.
    Cela n'a rien d'idiot, m'est avis que tu n'as peut être pas compris le principe de PowerShell, à savoir la manipulation d'objet possédant des propriétés qui peuvent être interrogées.
    Citation Envoyé par shawn12 Voir le message
    Tu peux faire comme ca
    certes mais là on combine l'approche classique des précédents shells, où on manipule du texte (Find étant une commande externe) avec un cmdlet PowerShell qui manipule et renvoi des objets.

    Pour rester dans la logique de PowerShell, et utiliser au mieux ces possibilités, mieux vaut se baser sur les propriétées de l'objet renvoyé par le cmdlet Get-ExchangeServer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $MyServer=Get-ExchangeServer|Where {$_.Name -eq "SYD-DC1"}
    On récupère donc l'objet possédant cette propriété unique alors qu'avec Find on récupére une chaîne de caractères unique tout un exécutant un process cmd.exe. De plus il sera nécessaire d'opérer le traitement inverse, d'une chaîne de caractères retrouver un objet...
    Pas trés efficient ici mais ça peut l'être dans certains cas par exemple avec FTP, bien que dans ce cas il n'y ait qu'un seul traitement Objet -> String.

  4. #4
    Membre actif Avatar de berrichon
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Points : 248
    Points
    248
    Par défaut
    Je vous remercie beaucoup pour ces réponses très documentées. Mais en fait comme l'a bien compris mon incompétence en powershell n'a d'égal que mon incapacité à m'exprimer clairement...

    Pour moi le but de la manip c'est de connaitre le nom du serveur qui figure sur la première ligne... On considérera donc que "SYD-DC1" est une inconnu pour moi.

    Pour l'instant j'aurais une solution plutot foireuse à base d'export dans un fichier texte que je parserais de manière un peu brutal. Mais je suis certain que le powershell offre une solution plus élégante.

    D'avance Merci

  5. #5
    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
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par berrichon Voir le message
    Pour moi le but de la manip c'est de connaitre le nom du serveur qui figure sur la première ligne
    Dans ce cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $MyServer=Get-ExchangeServer|Where {$_.Name -eq "SYD-DC1"}
     #Accéde à la proprièté name de l'objet MyServer
    $MyServer.Name

  6. #6
    Membre actif Avatar de berrichon
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Points : 248
    Points
    248
    Par défaut
    ben ecoute laurent je te remercie vraiment pour la patience dont tu fait preuve et chacue de tes explications me fait decouvrir de nouvelle voie. Grace a toi je sais desormais obtenir le valeur de l'attribut qui m'interesse pour chaque objet unique...
    Le couac c'est que dans ton exemple pour connaitre la valeur de syd-dc1 il faut que je connaisse préalablement la valeur de syd-dc1!
    Il me reste plus qu'a découvrir comment est ce que lont fait pour obtenir juste la première ligne retourné par get-exchserver et je serais le roi du pétrole.

    je te remercie quand même beaucoup pour ton aide.

  7. #7
    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
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par berrichon Voir le message
    Le couac c'est que dans ton exemple pour connaitre la valeur de syd-dc1 il faut que je connaisse préalablement la valeur de syd-dc1!
    Si je reprend le besoin de départ :
    Citation Envoyé par berrichon Voir le message
    Moi le seul truc con qui m'intéresse c'est obtenir SYD-DC1...
    ça match ! Je supposais que la notion de variable ne t'étais pas inconnue, On peut déjà utiliser cette approche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $FindSrvName="Nom"
     #Ou encore 
     # $FindSrvName= read-host "Please enter the server name:"
    $MyServer=Get-ExchangeServer|Where {$_.Name -eq $FindSrvName}
     #Accéde à la proprièté name de l'objet MyServer
    $MyServer.Name
    Citation Envoyé par berrichon Voir le message
    Il me reste plus qu'a découvrir comment est ce que lont fait pour obtenir juste la première ligne retourné par get-exchserver et je serais le roi du pétrole.
    Allez une piste : Get-Help, alias Help, étant LE cmdlet à connaitre sous PowerShell
    Consulte la section paramètres ...
    Citation Envoyé par berrichon Voir le message
    je te remercie quand même beaucoup pour ton aide.
    De rien

  8. #8
    Membre actif Avatar de berrichon
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Points : 248
    Points
    248
    Par défaut
    bonjour

    bon voila le petit bout de code à la mord moi le ... pour lequel je vous ai tant embetté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $toto=get-exchangeserver | select first 1
    $toto.Name
    J'imagine que personne ici n'ignorait la réponse. Mais bon je mets le post ici ca me servira d'aide mémoire quand j'aurais tout oublié..

    Merci beaucoup Laurent tes conseil ont été très utile au mauvais administrateur que je suis et qui essaye de se reconvertir au scripting...

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 16/05/2010, 00h41
  2. Plusieures infos sur une seule ligne avec ou sans tableau
    Par Him dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 17/03/2006, 14h16
  3. Réponses: 11
    Dernier message: 06/12/2005, 08h23
  4. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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