Select-Object de PowerShell simplifié : Guide du débutant

PowerShell est un outil puissant pour gérer les données, mais il fournit généralement trop d’informations à la fois. Comme vous le savez, trop d’informations peuvent être accablantes et difficiles à analyser. Pas de soucis, cependant. Le cmdlet PowerShell Select-Object sera très utile.

Dans ce tutoriel, vous apprendrez les bases du cmdlet Select-Object pour affiner ou filtrer les résultats de nombreuses façons.

Continuez et commencez la gestion des données sans douleur !

Prérequis

Ce tutoriel comprend des démonstrations pratiques. Pour suivre, assurez-vous d’avoir un système avec PowerShell installé. Ce tutoriel utilise Windows 10 avec PowerShell 7, mais toute version moderne devrait également fonctionner.

Qu’est-ce que le cmdlet Select-Object de PowerShell ?

Le cmdlet Select-Object simplifie la gestion des données en vous permettant de sélectionner des propriétés spécifiques à partir d’un objet ou d’un ensemble de données. En même temps, vous pouvez renommer des propriétés ou créer des propriétés calculées en fonction de celles déjà existantes.

La syntaxe de base de Select-Object est la suivante : où :

Parameter Function
-InputObject Specifies the object or data set you want to work with, which can be an object, an array of objects, or an output of another cmdlet.
Property Specifies the property or properties to select from the InputObject parameter. You can specify multiple properties separated by commas.
Optional Parameters Allows you to refine your selection, such as selecting a certain number of objects or skipping objects.
Select-Object [-InputObject] [Property] [Optional Parameters]

Sélectionner des objets par propriétés

Étant donné qu’une introduction plus détaillée est nécessaire pour satisfaire votre désir d’apprendre sur la cmdlet Select-Object, pourquoi ne pas commencer par l’un de ses cas d’utilisation courants ? Démarrez ce tutoriel en sélectionnant une propriété spécifique à partir d’un objet avec la cmdlet Select-Object.

Supposons que vous ayez une liste de processus en cours d’exécution sur votre ordinateur, mais que vous ne souhaitiez voir que les noms de chaque processus. Spécifier la propriété Nom à la cmdlet Select-Object fera l’affaire.

Ouvrez PowerShell et exécutez la commande suivante Get-Process ci-dessous pour récupérer et afficher une liste de tous les processus uniquement (Select-Object) par Nom.

Get-Process | Select-Object Name
Selecting objects by property

Outre les processus en cours d’exécution, la cmdlet Select-Object vous permet de travailler sur un fichier CSV. Supposons que vous ayez un fichier CSV avec de nombreuses colonnes mais que vous n’ayez besoin que de quelques-unes d’entre elles. Dans ce cas, laissez la cmdlet Select-Object choisir uniquement les colonnes pertinentes afin que vous puissiez manipuler et analyser les données.

Maintenant, exécutez la commande suivante pour sélectionner plusieurs propriétés (`Select-Object`): `Name` et `CPU` (séparées par des virgules). Cette fonctionnalité est utile lorsque vous travaillez avec de grands ensembles de données où vous avez seulement besoin de certaines propriétés de chaque objet.

De plus, cette commande trie également la liste des objets (`Sort-Object`) dans l’ordre `-Descending` avec la propriété `CPU` comme référence.

Get-Process | Select-Object Name, CPU | Sort-Object -Descending CPU

Ci-dessous, vous pouvez voir les processus répertoriés, en commençant par celui qui consomme le plus de ressources, Google Chrome (si vous en avez un installé).

Selecting multiple properties

Création d’une propriété calculée

Lorsque vous recherchez des propriétés qui correspondent mieux à vos besoins, envisagez de créer une propriété calculée. Pourquoi? Les propriétés calculées vous permettent de manipuler et de transformer les données, de combiner des propriétés existantes, d’effectuer des opérations mathématiques ou de formater les données de manière spécifique.

Pour créer une propriété calculée, vous devez spécifier un nouveau nom de propriété et une expression qui définit comment calculer la valeur de la propriété:

Exécutez la commande ci-dessous pour effectuer ce qui suit:

  • Récupérer une liste de processus en cours d’exécution (`Get-Process`), en ne sélectionnant que les propriétés `Name` et `CPU`.
  • Créez une nouvelle propriété calculée avec le Nom Mémoire (Mo), qui calcule l’utilisation de la mémoire de chaque processus en mégaoctets. L’utilisation de la mémoire est calculée en utilisant une Expression qui divise la propriété WorkingSet par 1Mo. Toute expression PowerShell valide fonctionne pour créer une propriété calculée.
  • Affiche tous les processus en cours d’exécution récupérés dans l’ordre -Descendant par la propriété calculée Mémoire (Mo).
Get-Process | Select-Object Name, CPU, @{Name="Memory (MB)";Expression={$_.WorkingSet/1MB}} | Sort-Object -Descending "Memory (MB)"
Creating a calculated property

Exclure une propriété spécifiée

Dans la vie réelle, les résultats d’une commande Select-Object peuvent contenir des informations sensibles, telles que des noms d’utilisateur et des mots de passe. Comment éviter ce risque ?

Pour empêcher l’affichage de données sensibles dans la sortie, ajoutez le paramètre -ExcludeProperty pour exclure une propriété spécifiée de la sortie.

Exécutez la commande suivante pour effectuer les tâches suivantes :

  • Récupérer une liste de tous les fichiers et dossiers (Get-ChildItem) dans le répertoire C:\\ récursivement (-Recurse).
  • Redirigez la sortie vers l’applet de commande Select-Object pour sélectionner les propriétés Name, Length et LastWriteTime.
  • Excluez (-ExcludeProperty) la propriété FullName de la sortie. Ce faisant, vous évitez d’afficher les chemins complets dans la sortie, qui peuvent contenir des informations confidentielles.
Get-ChildItem -Path C:\ -Recurse | Select-Object Name, Length, LastWriteTime -ExcludeProperty FullName
Excluding a specified property

Sauter le Premier ou le Dernier Nombre d’Objets

Lorsque vous travaillez avec des ensembles de données massifs, trouver les données dont vous avez besoin peut être comme chercher un diamant dans une mine de charbon. Mais pourquoi perdre du temps à filtrer des données non pertinentes ?

Dans PowerShell, l’applet de commande Select-Object fournit deux paramètres qui vous permettent d’exclure le premier (-Skip) et le dernier (-SkipLast) nombre d’objets dans la sortie, respectivement.

Pour voir comment le fait de sauter plusieurs objets de la sortie fonctionne :

Exécutez la commande ci-dessous pour obtenir tous les processus en cours (Get-Process) mais -Skip les premiers 100 objets retournés.

Notez que le nombre d’objets sautés est basé sur des valeurs entières (nombres positifs et entiers sans points décimaux), qui dans ce cas est 100.

Get-Process | Select-Object -Skip 100
Skipping the first 100 objects

Maintenant, exécutez la commande suivante pour obtenir une liste du contenu du répertoire de travail (Get-ChildItem) mais sautez les derniers (-SkipLast) 100 objets retournés.

Get-ChildItem | Select-Object -SkipLast 100
Skipping the last 100 objects

Sélectionner le Premier ou le Dernier Nombre d’Objets

Outre le fait de sauter le premier et le dernier nombre d’objets, vous pouvez également être intéressé par la sélection du premier et du dernier nombre d’objets. La commande Select-Object prend en charge cette fonctionnalité avec les paramètres First et Last qui vous permettent de sauter tout le reste pour gagner du temps et des ressources.

Exécutez la commande suivante pour obtenir tous les processus, mais ne sélectionnez que les -First 10 objets retournés.

Get-Process | Select-Object -First 10
Selecting the first 10 objects returned

Maintenant, exécutez la commande ci-dessous pour obtenir tout le contenu du répertoire de travail (Get-ChildItem), mais ne sélectionnez que les -Last 10 objets retournés.

Get-ChildItem | Select-Object -Last 10
Selecting the last 10 objects returned

Sélection d’objets uniques exclusivement

Lorsque vous travaillez avec des ensembles de données plus importants, vous rencontrerez des valeurs en double que vous voudrez peut-être exclure de la sortie, ce qui est typique. Mais la bonne chose avec la commande Select-Object est que vous n’avez pas besoin d’exclure manuellement les valeurs en double.

L’ajout du paramètre -Unique vous permet de sélectionner uniquement les objets uniques de la sortie, ce qui simplifie votre analyse et améliore la précision de vos résultats.

Exécutez la commande ci-dessous pour sélectionner (Select-Object) et renvoyer les -First 2 objets.

"1","1","2","3" | Select-Object -First 2

Ci-dessous, vous pouvez voir deux objets retournés indépendamment de savoir si l’autre est une valeur en double.

Selecting and returning objects with duplicate values

Enfin, exécutez la commande suivante pour renvoyer une seule valeur -Unique pour chacun des -First 2 objets sélectionnés.

"1","1","2","3" | Select-Object -First 2 -Unique

Cette fois, vous ne pouvez voir qu’un seul objet retourné parmi les deux premiers sélectionnés, car l’autre est simplement une valeur en double. Comme vous le réalisez, cette sortie prouve que le paramètre -Unique est pratique pour rapidement éliminer tout objet en double dans vos données.

Selecting unique objects exclusively

Conclusion

PowerShell a tendance à produire une surcharge d’informations. Mais dans ce tutoriel, vous avez appris comment la commande Select-Object de PowerShell aide à rationaliser vos données pour ne voir que les informations nécessaires.

Vous avez vu comment différents paramètres vous permettent de sélectionner et d’exclure des données, en particulier des valeurs en double, d’une sortie. Avec la commande Select-Object, la gestion de grandes quantités de données ne doit pas être une tâche intimidante.

À ce stade, vous pouvez rapidement affiner vos résultats pour les rendre mieux adaptés à l’analyse et au dépannage. Mais pourquoi ne pas apprendre comment formater vos propriétés calculées ensuite pour améliorer la lisibilité et la facilité d’utilisation?

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