Select-Object

: Microsoft.PowerShell.L’utilitaire

Sélectionne des objets ou des propriétés d’objet.

Syntaxe

Select-Object >] 
Select-Object >] 

Description

L’applet de commande Select-Object sélectionne les propriétés spécifiées d’un objet ou d’un ensemble d’objets. Il peut également sélectionner des objets uniques, un nombre spécifié d’objets ou des objets à une position spécifiée dans anarray.

Pour sélectionner des objets d’une collection, utilisez les paramètres First, Last, Unique, Skip et Index. Pour sélectionner les propriétés de l’objet, utilisez le paramètre Property. Lorsque vous sélectionnezproperties, Select-Object renvoie de nouveaux objets qui n’ont que les propriétés spécifiées.

À partir de Windows PowerShell 3.0, Select-Object inclut une fonctionnalité d’optimisation qui empêche les commandes de créer et de traiter des objets qui ne sont pas utilisés.

Lorsque vous incluez une commande Select-Object avec les paramètres First ou Index dans une ligne de commande, PowerShell arrête la commande qui génère les objets dès que le nombre d’objets sélectionnés est généré, même lorsque la commande qui génère les objets apparaît avant la commande Select-Object dans le pipeline. Pour désactiver ce comportement d’optimisation, utilisez le paramètre Waitparameter.

Exemples

Exemple 1 : Sélectionner des objets par propriété

Cet exemple crée des objets qui ont les propriétés Name, ID et working set (WS) des objets process.

Get-Process | Select-Object -Property ProcessName, Id, WS

Exemple 2: Sélectionnez les objets par propriété et formatez les résultats

Cet exemple obtient des informations sur les modules utilisés par les processus sur l’ordinateur. Il utilise l’applet de commande Get-Process pour obtenir le processus sur l’ordinateur.

Il utilise l’applet de commande Select-Object pour afficher un tableau d’instances contenues dans la propriété Modules de chaque instanceoutput System.Diagnostics.Process par Get-Process.

Le paramètre de propriété de l’applet de commande Select-Object sélectionne les noms de processus. Cela ajoute une ProcessNameNoteProperty à chaque instance et la remplit avec la valeur de la propriété ProcessName du processus en cours.

Enfin, l’applet de commande Format-List est utilisée pour afficher le nom et les modules de chaque processus dans une liste.

Exemple 3: Sélectionnez les processus utilisant le plus de mémoire

Cet exemple obtient les cinq processus qui utilisent le plus de mémoire. L’applet de commande Get-Process récupère les processus sur l’ordinateur. L’applet de commande Sort-Object trie les processus en fonction de l’utilisation de la mémoire (ensemble de travail), et l’applet de commande Select-Object sélectionne uniquement les cinq derniers membres du tableau d’objets correspondant.

Le paramètre Wait n’est pas requis dans les commandes qui incluent l’applet de commande Sort-Object car Sort-Object traite tous les objets, puis renvoie une collection. L’optimisation Select-Object n’est disponible que pour les commandes qui renvoient des objets individuellement au fur et à mesure de leur traitement.

Exemple 4: Sélectionnez des caractères uniques dans un tableau

Cet exemple utilise le paramètre unique de Select-Object pour obtenir des caractères uniques à partir d’un tableau de caractères.

"a","b","c","a","a","a" | Select-Object -Uniqueabc

Exemple 5: Sélectionnez les événements les plus récents et les plus anciens dans le journal des événements

Cet exemple obtient les premiers (les plus récents) et les derniers (les plus anciens) événements dans le journal des événements Windows PowerShell.

Get-EventLog récupère tous les événements dans le journal Windows PowerShell et les enregistre dans la variable $a.Ensuite, $a est acheminé vers l’applet de commande Select-Object. La commande Select-Object utilise le paramètre Indexparameter pour sélectionner des événements dans le tableau d’événements de la variable $a. L’indice du premier événement est 0. L’index du dernier événement est le nombre d’éléments dans $a moins 1.

$a = Get-EventLog -LogName "Windows PowerShell"$a | Select-Object -Index 0, ($A.count - 1)

Exemple 6 : Sélectionnez tout sauf le premier objet

Cet exemple crée une nouvelle session PSSession sur chacun des ordinateurs répertoriés dans les serveurs.fichiers txt, à l’exception du premier.

Select-Object sélectionne tous les ordinateurs sauf le premier dans une liste de noms d’ordinateurs. La liste résultante des ordinateurs est définie comme la valeur du paramètre ComputerName de l’applet de commande New-PSSession.

New-PSSession -ComputerName (Get-Content Servers.txt | Select-Object -Skip 1)

Exemple 7: Renommez des fichiers et sélectionnez-en plusieurs pour les examiner

Cet exemple ajoute un suffixe « -ro » aux noms de base des fichiers texte qui ont l’attribut en lecture seule et affiche ensuite les cinq premiers fichiers afin que l’utilisateur puisse voir un échantillon de l’effet.

Get-ChildItem utilise le paramètre dynamique en lecture seule pour obtenir des fichiers en lecture seule. Les fichiers résultants sont acheminés vers l’applet de commande Rename-Item, qui renomme le fichier. Il utilise le paramètre Passthru de Rename-Item pour envoyer les fichiers renommés à l’applet de commande Select-Object, qui sélectionne les 5 premiers fordisplay.

Le paramètre Wait de Select-Object empêche PowerShell d’arrêter l’applet de commande Get-ChildItem après avoir obtenu les cinq premiers fichiers texte en lecture seule. Sans ce paramètre, seuls les cinq premiers fichiers en lecture seule seraient renommés.

Get-ChildItem *.txt -ReadOnly | Rename-Item -NewName {$_.BaseName + "-ro.txt"} -PassThru | Select-Object -First 5 -Wait

Exemple 8: Démontrer les subtilités du paramètre -ExpandProperty

Cet exemple montre les subtilités du paramètre ExpandProperty.

Notez que la sortie générée était un tableau d’instances . Les instances sont conformes aux règles de formatage standard de la vue de sortie. Cela est vrai pour toutes les propriétés étendues. Si les objets outputted ont un format standard spécifique, la propriété développée peut ne pas être visible.

# Create a custom object to use for the Select-Object example.$object = @{Name="CustomObject";Expand=@(1,2,3,4,5)}# Use the ExpandProperty parameter to Expand the property.$object | Select-Object -ExpandProperty Expand -Property Name12345# The output did not contain the Name property, but it was added successfully.# Use Get-Member to confirm the Name property was added and populated.$object | Select-Object -ExpandProperty Expand -Property Name | Get-MemberTypeName: System.Int32Name MemberType Definition---- ---------- ----------CompareTo Method int CompareTo(System.Object value), int CompareTo(int value), int IComparable.CompareTo(System.Object obj)...Equals Method bool Equals(System.Object obj), bool Equals(int obj), bool IEquatable.Equals(int other)GetHashCode Method int GetHashCode()GetType Method type GetType()GetTypeCode Method System.TypeCode GetTypeCode(), System.TypeCode IConvertible.GetTypeCode()ToBoolean Method bool IConvertible.ToBoolean(System.IFormatProvider provider)ToByte Method byte IConvertible.ToByte(System.IFormatProvider provider)ToChar Method char IConvertible.ToChar(System.IFormatProvider provider)ToDateTime Method datetime IConvertible.ToDateTime(System.IFormatProvider provider)ToDecimal Method decimal IConvertible.ToDecimal(System.IFormatProvider provider)ToDouble Method double IConvertible.ToDouble(System.IFormatProvider provider)ToInt16 Method int16 IConvertible.ToInt16(System.IFormatProvider provider)ToInt32 Method int IConvertible.ToInt32(System.IFormatProvider provider)ToInt64 Method long IConvertible.ToInt64(System.IFormatProvider provider)ToSByte Method sbyte IConvertible.ToSByte(System.IFormatProvider provider)ToSingle Method float IConvertible.ToSingle(System.IFormatProvider provider)ToString Method string ToString(), string ToString(string format), string ToString(System.IFormatProvider provider)...ToType Method System.Object IConvertible.ToType(type conversionType, System.IFormatProvider provider)ToUInt16 Method uint16 IConvertible.ToUInt16(System.IFormatProvider provider)ToUInt32 Method uint32 IConvertible.ToUInt32(System.IFormatProvider provider)ToUInt64 Method uint64 IConvertible.ToUInt64(System.IFormatProvider provider)Name NoteProperty string Name=CustomObject

Exemple 9: Créer des propriétés personnalisées sur des objets

L’exemple suivant montre l’utilisation de Select-Object pour ajouter une propriété personnalisée à n’importe quel objet.Lorsque vous spécifiez un nom de propriété qui n’existe pas, Select-Object crée cette propriété en tant qu’aNoteProperty sur chaque objet transmis.

Exemple 10 : Créez des propriétés calculées pour chaque objet InputObject

Cet exemple illustre l’utilisation de Select-Object pour ajouter des propriétés calculées à votre entrée. Le fait de passer un bloc de script au paramètre de propriété amène Select-Object à évaluer l’expression d’un seul objet transmis et à ajouter les résultats à la sortie. Dans le bloc de script, vous pouvez utiliser la variable $_ pour référencer l’objet actuel dans le pipeline.

Par défaut, Select-Object utilisera la chaîne ScriptBlock comme nom de la propriété. En utilisant aHashtable, vous pouvez étiqueter la sortie de votre ScriptBlock comme une propriété personnalisée ajoutée à eachobject. Vous pouvez ajouter plusieurs propriétés calculées à chaque objet transmis à Select-Object.

Parameters

– ExcludeProperty

Spécifie les propriétés que cette applet de commande exclut de l’opération. Les caractères génériques sont autorisés.

À partir de PowerShell 6, il n’est plus nécessaire d’inclure le paramètre de propriété forExcludeProperty pour fonctionner.

Valeur par défaut:

Type: Chaîne
Position: Nommé
Aucun
Accepter l’entrée du pipeline: False
Accepte les caractères génériques: True
– ExpandProperty

Spécifie une propriété à sélectionner et indique qu’une tentative doit être faite pour étendre thatproperty.

  • Si la propriété spécifiée est un tableau, chaque valeur du tableau est incluse dans la sortie.
  • Si la propriété spécifiée est un objet, les propriétés des objets sont développées pour everyInputObject

Dans les deux cas, le Type d’objets en sortie correspondra au Type de la propriété développée.

Si le paramètre de propriété est spécifié, Select-Object tentera d’ajouter chaque propriété selectedproperty en tant que propriété NoteProperty à chaque objet sorti.

Avertissement

Si vous recevez l’erreur :Select: La propriété ne peut pas être traitée car la propriété <PropertyName> existe déjà, considérez ce qui suit.Notez que lors de l’utilisation de -ExpandPropertySelect-Object ne peut pas remplacer une propriété existante.Cela signifie :

  • Si l’objet développé a une propriété du même nom, une erreur se produira.
  • Si l’objet sélectionné a une propriété du même nom qu’une propriété d’objets développés, une erreur se produira.
Type: Chaîne
Position: Nommé
Valeur par défaut: Aucun
Accepter l’entrée du pipeline: False
Accepte les caractères génériques : False

– First

Spécifie le nombre d’objets à sélectionner depuis le début d’un tableau d’objets d’entrée.

Type: Int32
Position: Nommé
Valeur par défaut: Aucun
Accepter l’entrée du pipeline: False
Accepte les caractères génériques : False
– Index

Sélectionne les objets d’un tableau en fonction de leurs valeurs d’index. Entrez les index dans une liste séparée par des virgules. Les index d’un tableau commencent par 0, où 0 représente la première valeur et (n-1) représente la dernière valeur.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-InputObject

Specifies objects to send to the cmdlet through the pipeline. This parameter enables you to pipeobjects to Select-Object.

Lorsque vous passez des objets au paramètre InputObject, au lieu d’utiliser le pipeline, Select-Object traite l’objet InputObject comme un objet unique, même si la valeur est une collection. Il est recommandé d’utiliser le pipeline lors du passage de collections à Select-Object.

Type: PSObject
Position: Nommé
Valeur par défaut: Aucun
Accepter l’entrée du pipeline: True
Accepte les caractères génériques: False
-Last

Specifies the number of objects to select from the end of an array of input objects.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Property

Specifies the properties to select. Ces propriétés sont ajoutées en tant que membres NoteProperty aux objets output. Les caractères génériques sont autorisés.

La valeur du paramètre de propriété peut être une nouvelle propriété calculée. Pour créer une propriété calculée, utilisez une table de hachage.

Les clés valides sont :

  • Nom (ou étiquette) – <string>
  • Expression –<string> ou <script block>

Pour plus d’informations, seeabout_Calculated_Properties.

Type: Objet
Position: 0
Valeur par défaut: Aucun
Accepter l’entrée du pipeline : False
Accepter les caractères génériques : True
– Ignorer

Ignore (ne sélectionne pas) le nombre spécifié de articles. Par défaut, le paramètre Skip compteà partir du début du tableau ou de la liste d’objets, mais si la commande utilise le dernier paramètre, elle compte à partir de la fin de la liste ou du tableau.

Contrairement au paramètre Index, qui commence à compter à 0, le paramètre Skip commence à 1.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-SkipIndex
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
– SkipLast

Ignore (ne sélectionne pas) le nombre spécifié d’éléments à la fin de la liste ou du tableau. Fonctionne de la même manière que l’utilisation de Skip avec le dernier paramètre.

Contrairement au paramètre Index, qui commence à compter à 0, le paramètre SkipLast commence à 1.

Type: Int32
Position: Nommé
Valeur par défaut: Aucun
Accepter l’entrée du pipeline: False
Accepte les caractères génériques : False
– Unique

Spécifie que si un sous-ensemble des objets d’entrée a des propriétés et des valeurs identiques, seul un seul membre du sous-ensemble sera sélectionné.

Ce paramètre est sensible à la casse. En conséquence, les chaînes qui ne diffèrent que par le boîtier des caractères sontconsidéré comme unique.

Type: Paramètre de commutation
Position: Nommé
Valeur par défaut: Aucun
Accepter l’entrée du pipeline : False
Accepter les caractères génériques : False
– Wait

Indique que l’applet de commande désactive l’optimisation. PowerShell exécute les commandes dans l’ordre dans lequel elles apparaissent dans le pipeline de commandes et leur permet de générer tous les objets. Par défaut, si vous incluez une commande Select-Object avec les paramètres First ou Index dans un pipeline de commandes, PowerShell arrête la commande qui génère les objets dès que le nombre d’objets sélectionné est généré.

Ce paramètre a été introduit dans Windows PowerShell 3.0.

Type: Paramètre de commutation
Position: Nommé
Valeur par défaut: Aucun
Accepter l’entrée du pipeline: False
Accepte les caractères génériques: False

Entrées

PSObject

Vous pouvez diriger n’importe quel objet vers Select-Object.

Sorties

PSObject

Notes

  • Vous pouvez également vous référer à l’applet de commande Select-Object par son alias intégré, select. Pour plus d’informations, voir about_Aliases.

  • La fonction d’optimisation de Select-Object n’est disponible que pour les commandes qui écrivent des objets dans le pipeline au fur et à mesure de leur traitement. Cela n’a aucun effet sur les commandes qui tamponnent les objets traités etcrivez-les en tant que collection. L’écriture immédiate d’objets est une bonne pratique de conception d’applet de commande. Pour plus d’informations, voir Écrire des enregistrements uniques dans le Pipeline et des Directives de développement fortement encouragées.

  • about_Calculated_Properties
  • Groupe-Objet
  • Trier-Objet
  • Où-Objet

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *