about_Properties

Description courte

Décrit comment utiliser des propriétés d’objet dans PowerShell.

Description longue

PowerShell utilise des collections structurées d’informations appelées objets pour représenter les éléments dans les magasins de données ou l’état de l’ordinateur. En règle générale, vous travaillez avec des objets qui font partie de Microsoft .NET Framework, mais vous pouvez également créer des objets personnalisés dans PowerShell.

L’association entre un élément et son objet est très proche. Lorsque vous modifiez un objet, vous modifiez généralement l’élément qu’il représente. Par exemple, lorsque vous obtenez un fichier dans PowerShell, vous n’obtenez pas le fichier réel. Au lieu de cela, vous obtenez un objet FileInfo qui représente le fichier. Lorsque vous modifiez l’objet FileInfo, le fichier change également.

La plupart des objets ont des propriétés. Les propriétés sont les données associées à un objet. Différents types d’objet ont des propriétés différentes. Par exemple, un objet FileInfo , qui représente un fichier, a une propriété IsReadOnly qui contient $True si le fichier a l’attribut en lecture seule et $False si ce n’est pas le cas. Un objet DirectoryInfo , qui représente un répertoire de système de fichiers, a une propriété Parent qui contient le chemin d’accès au répertoire parent.

Propriétés des objets

Pour obtenir les propriétés d’un objet, utilisez l’applet Get-Member de commande. Par exemple, pour obtenir les propriétés d’un objet FileInfo , utilisez l’applet Get-ChildItem de commande pour obtenir l’objet FileInfo qui représente un fichier. Ensuite, utilisez un opérateur de pipeline (|) pour envoyer l’objet FileInfo à Get-Member. La commande suivante obtient le pwsh.exe fichier et l’envoie à Get-Member. La $PSHOME variable automatique contient le chemin d’accès du répertoire d’installation De PowerShell.

Get-ChildItem $PSHOME\pwsh.exe | Get-Member

La sortie de la commande répertorie les membres de l’objet FileInfo . Les membres incluent à la fois les propriétés et les méthodes. Lorsque vous travaillez dans PowerShell, vous avez accès à tous les membres des objets.

Pour obtenir uniquement les propriétés d’un objet et non les méthodes, utilisez le paramètre MemberType de l’applet Get-Member de Propertycommande avec la valeur , comme illustré dans l’exemple suivant.

Get-ChildItem $PSHOME\pwsh.exe | Get-Member -MemberType Property
TypeName: System.IO.FileInfo

Name              MemberType Definition
----              ---------- ----------
Attributes        Property   System.IO.FileAttributes Attributes {get;set;}
CreationTime      Property   System.DateTime CreationTime {get;set;}
CreationTimeUtc   Property   System.DateTime CreationTimeUtc {get;set;}
Directory         Property   System.IO.DirectoryInfo Directory {get;}
DirectoryName     Property   System.String DirectoryName {get;}
Exists            Property   System.Boolean Exists {get;}
Extension         Property   System.String Extension {get;}
FullName          Property   System.String FullName {get;}
IsReadOnly        Property   System.Boolean IsReadOnly {get;set;}
LastAccessTime    Property   System.DateTime LastAccessTime {get;set;}
LastAccessTimeUtc Property   System.DateTime LastAccessTimeUtc {get;set;}
LastWriteTime     Property   System.DateTime LastWriteTime {get;set;}
LastWriteTimeUtc  Property   System.DateTime LastWriteTimeUtc {get;set;}
Length            Property   System.Int64 Length {get;}
Name              Property   System.String Name {get;}

Après avoir trouvé les propriétés, vous pouvez les utiliser dans vos commandes PowerShell.

Valeurs de propriétés

Bien que chaque objet d’un type spécifique ait les mêmes propriétés, les valeurs de ces propriétés décrivent l’objet particulier. Par exemple, chaque objet FileInfo a une propriété CreationTime , mais la valeur de cette propriété diffère pour chaque fichier.

La façon la plus courante d’obtenir les valeurs des propriétés d’un objet consiste à utiliser l’opérateur d’accès membre (.). Tapez une référence à l’objet, telle qu’une variable qui contient l’objet ou une commande qui obtient l’objet. Ensuite, tapez l’opérateur (.) suivi du nom de la propriété.

Par exemple, la commande suivante affiche la valeur de la propriété CreationTime du pwsh.exe fichier. La Get-ChildItem commande renvoie un objet FileInfo qui représente le pwsh.exe file. La commande est placée entre parenthèses pour vous assurer qu’elle est exécutée avant l’accès à toutes les propriétés.

(Get-ChildItem $PSHOME\pwsh.exe).CreationTime
Tuesday, June 14, 2022 5:17:14 PM

Vous pouvez également enregistrer un objet dans une variable, puis obtenir ses propriétés à l’aide de la méthode d’accès membre (.), comme illustré dans l’exemple suivant :

$a = Get-ChildItem $PSHOME\pwsh.exe
$a.CreationTime
Tuesday, June 14, 2022 5:17:14 PM

Vous pouvez également utiliser les Select-Object applets de commande et Format-List les applets de commande pour afficher les valeurs de propriété d’un objet. Select-Object et Format-List chacun possède un paramètre Property . Vous pouvez utiliser le paramètre Property pour spécifier une ou plusieurs propriétés et leurs valeurs. Vous pouvez également utiliser le caractère générique carte (*) pour représenter toutes les propriétés.

Par exemple, la commande suivante affiche les valeurs de toutes les propriétés du fichier pwsh.exe.

Get-ChildItem $PSHOME\pwsh.exe | Format-List -Property *
PSPath              : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7-preview\pwsh.exe
PSParentPath        : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7-preview
PSChildName         : pwsh.exe
PSDrive             : C
PSProvider          : Microsoft.PowerShell.Core\FileSystem
PSIsContainer       : False
Mode                : -a---
ModeWithoutHardLink : -a---
VersionInfo         : File:             C:\Program Files\PowerShell\7-preview\pwsh.exe
                      InternalName:     pwsh.dll
                      OriginalFilename: pwsh.dll
                      FileVersion:      7.3.0.5
                      FileDescription:  pwsh
                      Product:          PowerShell
                      ProductVersion:   7.3.0-preview.5 SHA: cfc237ac85cf24fa760923ace568201c8f3256aa
                      Debug:            False
                      Patched:          False
                      PreRelease:       False
                      PrivateBuild:     False
                      SpecialBuild:     False
                      Language:         Language Neutral

BaseName            : pwsh
ResolvedTarget      : C:\Program Files\PowerShell\7-preview\pwsh.exe
Target              :
LinkType            :
Length              : 285088
DirectoryName       : C:\Program Files\PowerShell\7-preview
Directory           : C:\Program Files\PowerShell\7-preview
IsReadOnly          : False
FullName            : C:\Program Files\PowerShell\7-preview\pwsh.exe
Extension           : .exe
Name                : pwsh.exe
Exists              : True
CreationTime        : 6/14/2022 5:17:14 PM
CreationTimeUtc     : 6/14/2022 10:17:14 PM
LastAccessTime      : 7/18/2022 11:32:06 AM
LastAccessTimeUtc   : 7/18/2022 4:32:06 PM
LastWriteTime       : 6/14/2022 5:17:14 PM
LastWriteTimeUtc    : 6/14/2022 10:17:14 PM
LinkTarget          :
Attributes          : Archive

Propriétés statiques

Vous pouvez utiliser les propriétés statiques des classes .NET dans PowerShell. Les propriétés statiques sont des propriétés de classe, contrairement aux propriétés standard, qui sont des propriétés d’un objet.

Pour obtenir les propriétés statiques d’une classe, utilisez le paramètre static de l’applet Get-Member de commande. Par exemple, la commande suivante obtient les propriétés statiques de la System.DateTime classe.

Get-Date | Get-Member -MemberType Property -Static
TypeName: System.DateTime

Name     MemberType Definition
----     ---------- ----------
MaxValue Property   static datetime MaxValue {get;}
MinValue Property   static datetime MinValue {get;}
Now      Property   datetime Now {get;}
Today    Property   datetime Today {get;}
UtcNow   Property   datetime UtcNow {get;}

Pour obtenir la valeur d’une propriété statique, utilisez la syntaxe suivante.

[<ClassName>]::<Property>

Par exemple, la commande suivante obtient la valeur de la propriété statique UtcNow de la System.DateTime classe.

[System.DateTime]::UtcNow

Énumération des accès aux membres

À compter de PowerShell 3.0, lorsque vous utilisez l’opérateur d’accès membre (.) pour accéder à une propriété qui n’existe pas dans une collection de listes, PowerShell énumère automatiquement les éléments de la collection et retourne la valeur de la propriété sur chaque élément. Pour plus d’informations, consultez about_Member-Access_Enumeration.

Exemples

Cette commande retourne la valeur de la propriété DisplayName de chaque service qui Get-Service retourne.

(Get-Service).DisplayName
Application Experience
Application Layer Gateway Service
Windows All-User Install Agent
Application Identity
Application Information
...

Toutes les collections ont une propriété Count qui retourne le nombre d’objets de la collection.

(Get-Service).Count
176

À compter de PowerShell 3.0, vous pouvez obtenir la propriété Count ou Length des objets singleton qui ne sont pas des collections.

(Get-Service Audiosrv).Count
1

Toutefois, certains objets ont une propriété Length . Par exemple, la longueur d’une chaîne est le nombre de caractères dans la chaîne. La propriété Count est le nombre d’instances de l’objet.

PS> $str = 'string'
PS> $str.Length
6
PS> $str.Count
1

Si une propriété existe sur les objets individuels et sur la collection, seule la propriété de la collection est retournée.

$collection = @(
    [pscustomobject]@{length = "foo"}
    [pscustomobject]@{length = "bar"}
)
# PowerShell returns the collection's Length.
$collection.length
2

Voir aussi