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 :

Affichage, Classement via un Select avec variable ?


Sujet :

Scripts/Batch

  1. #1
    Membre habitué
    Affichage, Classement via un Select avec variable ?
    Bonjour a tous,

    J'ai un tableau simple avec des données ou j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $Headers = "A", "B"
    ($Data  | ConvertFrom-Csv -Delimiter ";" -Header $Headers)
    En sorti j'ai un tableau qui ressemble a ça

    | A | B |
    |---|---|
    | 1 | 2 |

    Plus loin dans le code j'ajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Data | Add-Member -NotePropertyName ID -NotePropertyValue "3"
    En sorti j'ai
    | A | B | ID
    |---|---|---
    | 1 | 2 | 3

    Je souhaiterais l'avoir comme ça :
    | ID| A | B
    |---|---|---
    | 3 | 1 | 2

    J'ai tenté de faire un truc dans le style
    $Data | Select ID, $Headers

    Mais ça na pas fonctionné

    Le script génère plusieurs tableaux avec des headers différant ou le nom est changeant tout le temps, il y a que le ID qui est connu

    Avez vous une idée ?

  2. #2
    Rédacteur

    Salut,
    le cmdlet Select-object attend un tableau de String, la syntaxe suivante ne fonctionne pas:
    Code powershell :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    select -Property $headers,'handle'

    Ni celle-là
    Code powershell :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    select -Property $headers+'handle'

    mais celle-ci fonctionne :
    Code powershell :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    select -Property @($headers+'handle')

    Il en existe peut être d'autres basées sur un scriptblock, je te laisse tester ;-)

  3. #3
    Expert confirmé
    Code powershell :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $item = New-Object PSObject
    $item | Add-Member -type NoteProperty -Name 'A' -Value '1'
    $item | Add-Member -type NoteProperty -Name 'B' -Value '2'
    $item | Add-Member -type NoteProperty -Name 'ID' -Value '3'
     
    $item | Select-Object "ID", *

  4. #4
    Rédacteur

    Le nom de propriété doit être unique dans la collection, mais ce n'est pas précisé dans la doc :

    Get-Help Select-Object -Parameter property

    -Property <Object[]>
    Specifies the properties to select. Wildcards are permitted.

    The value of the Property parameter can be a new calculated property. To create a calculated, property, use a hash
    table. Valid keys are:

    - Name (or Label) <string>

    - Expression <string> or <script block>

    Obligatoire ? false
    Position ? 0
    Valeur par défaut None
    Accepter l'entrée de pipeline ? False
    Accepter les caractères génériques ? false
    Dommage c'était une solution élégante :-)

  5. #5
    Membre habitué
    Ce message n'a pas pu être affiché car il comporte des erreurs.

  6. #6
    Expert confirmé
    Et comme ceci ?
    Je te l'accorde que c'est un peu galère pour pas grand chose.

    Code powershell :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $item = New-Object PSObject
    $item | Add-Member -type NoteProperty -Name 'A' -Value '1'
    $item | Add-Member -type NoteProperty -Name 'B' -Value '2'
    $item | Add-Member -type NoteProperty -Name 'ID' -Value '3'
     
    [object[]]$Fields = "ID"
    $Fields += [object[]]($item.PSObject.Properties.Name | Where-Object {$_ -ne "ID"})
    $item | Select-Object -Property $Fields

  7. #7
    Membre habitué
    ça fonctionne

    merci beaucoup

###raw>template_hook.ano_emploi###