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 :

Afficher plusieurs objets personnalisés différents dans un script ? [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut Afficher plusieurs objets personnalisés différents dans un script ?
    Bonjour,

    Dans un script PowerShell, j'ai deux fonctions qui font chacune un traitement. Celle-ci me retourne un objet personnalisé :

    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
    16
    17
    18
    19
    20
    Function BpplClients{
    ... Traitement...
    			# Affichage des résultats des Corrections
    			New-Object -TypeName PSObject -Property @{	Hardware = $Hardware
    														OS = $OS
    														Client = $Client
    														PolicyName = ""
    													} | Select Hardware,OS,Client,PolicyName
     
     
    }
     
    Function BpplList{
    ... Traitement...
    		# Affichage des résultats des Corrections
    		New-Object -TypeName PSObject -Property @{	NamePolicy = $List1
    													IsActive = $Active
    												} | Select NamePolicy,IsActive
     
    }

    Les propriétés des deux objets sont différents.

    Lorsque j'appelle une ces fonctions séparément, elle fonctionne bien. Lorsque je lès appelle en même temps, j'ai que la 1er fonction appelé qui me fait un retour, l'autre m'affiche rien. Je pense que le problème vient du faire que les entêtes des objets sont différents car lorsque je met les même entêtes dans les deux objets, les fonctions me retournent bien les résultats.

    Comment faire pour afficher plusieurs objets différents dans uns script Power Shell ?

    Merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    bonjour
    Citation Envoyé par arnaudperfect Voir le message
    Bonjour,

    Les propriétés des deux objets sont différents.
    Les objets sont de même type : TypeName : System.Management.Automation.PSCustomObject
    d'où sans doute le problème !

    Lorsque j'appelle une ces fonctions séparément,

    Comment faire pour afficher plusieurs objets différents dans uns script Power Shell ?

    Merci d'avance
    essai ceci :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BpplList | Format-Table
    BpplClients | Format-Table

  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 6ratgus Voir le message
    d'où sans doute le problème !
    Si je me souviens bien, PS base son affichage sur le nombre de propriété du premier objet. Si je retrouve l'info je vous la posterai.

  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
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Si le premier objet à moins de cinq propriétés le système de formatage se base sur ce nombre et utilise un tableau sinon il utilise une liste :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [pscustomobject]@{Nom='John';Prenom='Doe';age=42;a=1;b=2}; Get-Process PowerShell ; Get-Date
    #Affiche tous les objets
     
    [pscustomobject]@{Nom='John';Prenom='Doe';age=42;a=1}; Get-Process PowerShell ; Get-Date
    #Affiche seulement le premier
    Le comportement est différent entre la v3 (et + )et la v2.
    On peut aussi utiliser un fichier de formatage pour éviter ce comportement.

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    Bonjour Laurent
    Citation Envoyé par Laurent Dardenne Voir le message
    Si le premier objet à moins de cinq propriétés le système de formatage se base sur ce nombre et utilise un tableau sinon il utilise une liste :
    Merci Laurent pour l'info

    Le comportement est différent entre la v3 (et + )et la v2.
    On peut aussi utiliser un fichier de formatage pour éviter ce comportement.
    qu'appelle tu "fichier de formatage" ?

  6. #6
    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 6ratgus Voir le message
    qu'appelle tu "fichier de formatage" ?
    Un fichier XML chargé avec Update-FormatData, un exemple :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    @'
    <?xml version="1.0" encoding="utf-8"?>
    <Configuration>
        <ViewDefinitions>
            <View>
                <Name>ReadOptions</Name>
                <ViewSelectedBy>
                   <TypeName>Demo.CustomType</TypeName>
                </ViewSelectedBy>
                <TableControl>
                <TableHeaders>
              <TableColumnHeader>
                  <Label>Nom</Label>    
                <Alignment>Left</Alignment>                
              </TableColumnHeader>  
              <TableColumnHeader>
                  <Label>Prenom</Label>    
                <Alignment>Right</Alignment>
              </TableColumnHeader> 
              <TableColumnHeader>
                  <Label>Age</Label>    
                <Alignment>Right</Alignment>                
              </TableColumnHeader>
             </TableHeaders>
                 <TableRowEntries>
              <TableRowEntry>
                <TableColumnItems>
                  <TableColumnItem>
                   <Scriptblock>$_.Nom</Scriptblock>                              
                  </TableColumnItem>               
                  <TableColumnItem>
                     <Scriptblock>$_.Prenom</Scriptblock>
                  </TableColumnItem> 
                  <TableColumnItem>
                       <Scriptblock>$_.Age</Scriptblock>
                  </TableColumnItem>
                </TableColumnItems>
             </TableRowEntry>
           </TableRowEntries>
          </TableControl>
            </View>        
        </ViewDefinitions>
    </Configuration>
    '@  > C:\Temp\Demo.CustomType.Format.Ps1xml
     
    $o=[pscustomobject]@{Nom='John';Prenom='Doe';age=42;a=1}
    $o;Get-Process PowerShell ; Get-Date
     
    $o.PsObject.TypeNames.Insert(0,"Demo.CustomType")
    Update-FormatData -Path C:\Temp\Demo.CustomType.Format.Ps1xml
     
    $o;Get-Process PowerShell ; Get-Date

  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
    J'ai adapté le code par rapport à l'exemple, le contenu du fichier XML sert uniquement la démo.

  8. #8
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    Merci Laurent

    J'avais un peu oublié cette commande update-formatdata ainsi que sont ami : export-FormatData

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/02/2011, 10h14
  2. Lancer job talend avec plusieurs variables de contexte dans le script .sh
    Par TheRealWill dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 07/06/2010, 11h07
  3. Afficher plusieurs lignes de texte dans un label
    Par dahmane2007 dans le forum VB.NET
    Réponses: 2
    Dernier message: 21/10/2008, 03h28
  4. afficher descriptifs de tailles différentes dans un tableau de taille fixe
    Par poupouille dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 02/02/2008, 23h27
  5. Msg 2714 (objet deja existant) dans un script SQL Server
    Par Makrier dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/11/2006, 12h40

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