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 ProcessName
NoteProperty à 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
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.
Type: | Chaîne |
Position: | Nommé |
Aucun | |
Accepter l’entrée du pipeline: | False |
Accepte les caractères génériques: | True |
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 -ExpandProperty
Select-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 |
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 |
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 |
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 |
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 |
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 |
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 |
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
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 |
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 |
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