Apprendre Sort-Object PowerShell avec des exemples

Le tri des données ne devrait pas être une tâche accablante. Si vous recherchez un moyen efficace de trier des données, la commande Sort-Object de PowerShell est là pour vous aider !

Dans ce tutoriel, vous apprendrez comment utiliser la commande Sort-Object de PowerShell pour trier des données, que ce soient des nombres, des chaînes de caractères ou des objets.

Éliminez le besoin de regarder constamment vos données et triez-les efficacement dans PowerShell !

Prérequis

Assurez-vous d’avoir une machine avec PowerShell 5.0 ou une version ultérieure installée pour suivre ce tutoriel avec les démonstrations pratiques. Ce tutoriel utilise Windows 10 avec PowerShell 7 installé.

Trier des données avec la commande Sort-Object de PowerShell

En fonction de vos besoins, vous pouvez trier des données en fonction d’une ou plusieurs propriétés de nombreuses manières. La commande Sort-Object vous permet de trier des données, par exemple, dans l’ordre ascendant ou descendant pour faciliter l’analyse et le travail avec des informations structurées.

La syntaxe de base de la commande Sort-Object est la suivante :

  • <Objet-à-trier> – Fait référence à la collecte de données à trier, telles qu’un tableau, une liste ou d’autres types de données.
  • <-Paramètre> – Un paramètre facultatif pour spécifier les critères de tri qui vous permet de personnaliser la façon dont le tri est effectué.
<Object-to-Sort>|Sort-Object <-Parameter>

Pour voir comment vous pouvez trier des données par ordre croissant et décroissant :

1. Ouvrez PowerShell et exécutez la commande ci-dessous, qui ne fournit pas de sortie mais définit une liste de nombres entiers aléatoires dans la variable $numbers.

$numbers = 4, 2, 3, 1, 5

? Notez qu’en PowerShell, vous ne travaillez pas seulement avec des nombres et des chaînes, mais avec des objets, car PowerShell est un langage et un shell orienté objet.

2. Ensuite, exécutez les commandes suivantes pour trier (Sort-Objects) et afficher (Write-Output) les nombres définis dans la variable $numbers.

$sortedNumbers = $numbers | Sort-Object
Write-Output $sortedNumbers

Sans ajouter de paramètres, la sortie affiche les nombres par ordre croissant.

Sorting data in ascending order

3. Maintenant, exécutez les mêmes commandes, mais cette fois, ajoutez le paramètre -Descending pour trier et afficher les nombres par ordre décroissant.

$sortedNumbers = $numbers | Sort-Object -Descending
Write-Output $sortedNumbers

Une sortie similaire à celle ci-dessous indique que les nombres ont été triés par ordre décroissant.

Sorting numbers in descending order

Tri des données par valeurs uniques

Trier les données par ordre croissant et décroissant est une chose. Mais il peut y avoir des cas où vous devez trier les données en fonction de valeurs uniques. Dans ce contexte, « unique » fait référence à des valeurs distinctes ou non répétées au sein d’un ensemble de données.

Pour trier les données par valeurs uniques :

Exécutez les commandes suivantes pour effectuer ce qui suit :

  • Définissez une liste de nombres entiers (avec des doublons inclus) dans la variable $numbers.
  • Triez les nombres par valeurs -Unique dans un ordre -Descending et stockez le résultat dans la variable $sortedNumbers.

Lorsque vous triez par valeurs uniques, vous organisez les données de sorte que chaque valeur n’apparaisse qu’une seule fois dans le résultat trié, éliminant ainsi les doublons.

Ces commandes ne fournissent pas de sortie, mais vous vérifierez les données triées à l’étape suivante.

$numbers = 4, 2, 3, 3, 1, 5, 2
$sortedNumbers = $numbers | Sort-Object -Unique -Descending

Maintenant, exécutez la commande Write-Output ci-dessous pour afficher le contenu de la variable $sortedNumbers afin de vérifier le résultat.

Write-Output $sortedNumbers

Ci-dessous, toutes les valeurs uniques sont triées par ordre décroissant, et les valeurs en double ont été éliminées.

Comme vous pouvez le voir, le tri par valeurs uniques améliore l’efficacité de l’analyse des données et élimine les informations redondantes lors du traitement de grands ensembles de données.

Sorting data by unique values

Tri des données par chaînes de caractères

Jusqu’à présent, vous avez vu comment trier des valeurs numériques. Mais que se passe-t-il si vous travaillez avec des chaînes de caractères ? Ne vous inquiétez pas. La cmdlet Sort-Object vous permet de classer les données de chaînes dans un ordre spécifique en fonction de critères de tri.

Dans ce contexte, une chaîne fait référence à un seul caractère ou à une séquence de caractères, tels que des mots, des phrases ou d’autres données textuelles. En PowerShell, les chaînes sont représentées en enfermant le texte entre des guillemets, soit simples (') soit doubles (").

Exécutez les commandes suivantes pour trier un tableau de chaînes par défaut dans l’ordre croissant (alphabétique).

Le tri des chaînes en PowerShell offre une flexibilité dans l’organisation des données textuelles dans un ordre souhaité, permettant une manipulation et une analyse efficaces des données.

# Définir un tableau de chaînes
$strings = "a", "b", "c" 
# Trier les chaînes par ordre croissant par défaut (sans paramètres)
$sortedStrings = $strings | Sort-Object
# Afficher les chaînes triées
Write-Output $sortedStrings
Sorting strings in alphabetical order

Maintenant, exécutez les mêmes commandes, mais triez-les dans l’ordre -Descendant à la place.

# Définir un tableau de chaînes
$strings = "a", "b", "c" 
# Trier les chaînes par ordre descendant
$sortedStrings = $strings | Sort-Object -Descending
# Afficher les chaînes triées
Write-Output $sortedStrings

Cette fois, vous verrez la sortie dans l’ordre inverse, comme indiqué ci-dessous.

Sorting strings in the reverse order

Trier les données par propriétés

Nul doute que le tri des chaînes est pratique. Mais en général, vous devriez être plus spécifique lors du tri des données. En plus du tri des chaînes, pourquoi ne pas trier les objets en fonction de leurs propriétés?

Lorsque vous travaillez avec des objets PowerShell, chaque objet possède généralement une ou plusieurs propriétés que vous pouvez utiliser pour le tri. Ces propriétés vous permettent de définir vos critères de tri selon vos besoins.

Exécutez les commandes suivantes pour récupérer une liste de tous les processus en cours d’exécution (Get-Process) sur votre système et les trier par utilisation du CPU. Le paramètre -Descending affiche le résultat avec les processus les plus gourmands en ressources répertoriés en premier.

# Récupérer une collection de tous les processus en cours d'exécution
$processes = Get-Process

# Trier les processus en fonction de l'utilisation du CPU dans l'ordre décroissant
$sortedProcesses = $processes | Sort-Object -Property CPU -Descending

# Sélectionner et afficher les propriétés Nom et CPU de chaque processus
$sortedProcesses | Select-Object Name, CPU
Sorting data by properties

Tri des Tables de Hashage

Trier les objets par propriétés change la donne lorsqu’il s’agit d’analyse de données. Mais que se passe-t-il lorsque vous organisez les données par paires clé-valeur comme dans les tables de hashage?

Le cmdlet Sort-Object vous permet de trier les tables de hashage pour améliorer la présentation des données et simplifier la récupération d’informations.

Exécutez le code suivant pour convertir une table de hachage en un tableau de paires clé-valeur et trier la table de hachage par ses clés.

# Créez une table de hachage avec trois paires clé-valeur
$hashTable = @{
    "C" = "Charlie"
    "A" = "Alpha"
    "B" = "Bravo"
}

# Triez la table de hachage par les clés et stockez le résultat trié dans $sortedHashTable
$sortedHashTable = $hashTable.GetEnumerator() | Sort-Object -Property Name

# Parcourez chaque entrée dans la table de hachage triée
foreach ($entry in $sortedHashTable) {
    # Affichez la paire clé-valeur
    Write-Output "$($entry.Name): $($entry.Value)"
}

Comme les clés trient la table de hachage, la sortie ressemblera à ce qui suit, où vous pouvez observer que la sortie organise et affiche les paires clé-valeur dans un ordre spécifique.

Cette méthode de tri garantit une meilleure présentation des données et facilite la récupération d’informations à partir de la table de hachage.

Sorting hash tables

Conclusion

Tout au long de ce tutoriel, vous avez exploré comment trier des valeurs uniques, des chaînes de caractères, des nombres, des processus, et même des tables de hachage avec la commande Sort-Object. Le tri des données est une tâche qui vous permet d’ouvrir la voie à une analyse de données plus perspicace, et avec la commande Sort-Object de PowerShell, vous êtes sur la bonne voie.

Armé de ces connaissances nouvellement acquises, vous pouvez désormais vous assurer que vos données sont organisées de manière significative et les présenter avec confiance à d’autres.

Le tri n’est qu’une des nombreuses capacités précieuses de PowerShell et de ses cmdlets. Pourquoi ne pas élargir vos compétences en apprenant à connaître d’autres cmdlets? Peut-être créer des journaux de programme avec Tee-Object ou mesurer les tailles d’objet avec Measure-Object?

Source:
https://adamtheautomator.com/powershell-sort-object/