est-il possible de trier la sortie de la cmdlet de liste de format par nom de propriété? je voudrais avoir p> note strong>: J'aurais dû spécifier depuis le début que, contrairement aux propriétés "A" et "B", le véritable objet que je dois traiter Avec beaucoup de propriétés, et de nouveaux pourraient être ajoutés à l'avenir, donc je ne connais donc pas tous les noms de propriété à l'avance. P> p>
Supposons que j'ai un objet $ x avec deux propriétés "A" et "B", et lorsque je exécute un format-liste avec elle, j'obtiens
8 Réponses :
Je suis sûr que vous pouvez obtenir la sortie souhaitée. Je suggère que vous expérimentez à la fois avec un objet de tri (ou un tri simple) et également un objet de groupe (groupe ordinaire) p>
Mon idée est de placer le tri ou le groupe avant | Liste de format p>
donc $ x | Objet de tri -property xyz | Liste de format p>
Cette approche triera les objets en fonction de la valeur de la propriété XYZ, mais cela ne triera pas les fonds pour chaque objet individuel.
afaik, Pour votre exemple particulier, cela devrait fonctionner: p> si le L'ensemble de propriétés n'est pas fixe / connu, la procédure sera plus délicate avec l'utilisation de EDIT: P> ici c'est (utilisons $ hôte à la place de $ x): p> liste de format code> ne fournit pas une telle option. Get-Member CODE> et de la fabrication de prétraitement de la fabrication de paramètres triés pour Select-Object Code>. P>. Select-Object Code> n'est pas absolument nécessaire: P> $host | Format-List ([string[]]($host | Get-Member -MemberType Property | %{ $_.Name } | Sort-Object))
En utilisant des alias de commande PowerShell, la réponse ci-dessus peut être raccourcie à: $ x | fl ([chaîne []] ($ x | Propriété GM -M |% {$ _. Nom} | Trier)) code>
Si vous avez affaire à un petit nombre de propriétés, vous pouvez spécifier leur commande avec le paramètre -Property.
Voici un exemple: P>
Format-List -Property Owner, Path
Le plus proche que je puisse penser, c'est créer une nouvelle psobject basée sur l'ancien mais avec les propriétés triés, par exemple: Vous pouvez obtenir plus de capitaine et donner à la nouvelle psobject correspond à l'ancien, etc. p> p>
J'aime aussi cette solution ... +1
Cela semble fonctionner correctement (édité de sorte qu'il accepte l'entrée de pipeline):
Élargir sur l'idée de Christopher, en utilisant Get-Member CODE> et Liste de format -Property CODE>: $x | fl -property ($x| gm | sort name).name
rien de mal à la réponse acceptée, mais un vraiment em> option sale pour un seul off-off - qui n'a pas besoin de la collecte déjà dans une variable - pourrait être ... ... qui fait une sorte sur chaque ligne de la sortie de Notez que toutes les valeurs de propriété issues sur la ligne suivante seront cassées (et apparaissent probablement en haut de la sortie), mais cela pourrait être corrigé par le ... p> ... au détriment de l'indentation de la colonne. p> Bien sûr, tous les informations d'objet / pipeline sont perdues par ce liste de format code>. p> Out-String Code> Appel, bien que-on envisageant de même que la même chose est vrai de liste de format code> -Vous ne vous souciez probablement pas de ce point. p> p>
En utilisant sortie: strong> p> Select-objet code> avec une propriété calculée ( @ {} code>) puis en excluant ( -excurdeProperty code>) Vous pouvez également commander les propriétés que vous voulez. Cela fonctionne même lorsque vous ne savez pas ce qui vient à venir.