A propos des propriétés

  • 12/01/2017
  • 5 minutes à lire
    • S
    • .

    • s
    • q

Description succincte

Décrit comment utiliser les propriétés des objets dans PowerShell.

Description longue

PowerShell utilise des collections structurées d’informations appelées objets pour représenter les éléments des magasins de données ou l’état de l’ordinateur. Généralement,vous travaillez avec des objets qui font partie du 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 étroite. 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. Vous obtenez plutôt 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 qui sont associées à un objet. Différents types d’objets ont des propriétés différentes. Par exemple, un objetFileInfo, qui représente un fichier, possède une propriété IsReadOnly qui contient $True si le fichier l’attribut read-only et $False dans le cas contraire.Un objet DirectoryInfo, qui représente un répertoire de système de fichiers, possède une propriété Parent qui contient le chemin d’accès au répertoire parent.

Propriétés d’un objet

Pour obtenir les propriétés d’un objet, utilisez le cmdlet Get-Member. Par exemple,pour obtenir les propriétés d’un objet FileInfo, utilisez le cmdlet Get-ChildItempour 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 fichier PowerShell.exe et l’envoie à Get-Member.La variable automatique $Pshome contient le chemin du répertoire d’installation de PowerShell.

Get-ChildItem $pshome\PowerShell.exe | Get-Member

La sortie de la commande liste les membres de l’objet FileInfo.Les membres comprennent à 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ètreMemberType du cmdlet Get-Member avec une valeur de « property », comme le montre l’exemple suivant.

Get-ChildItem $pshome\PowerShell.exe | Get-Member -MemberType property
TypeName: System.IO.FileInfoName 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 des propriétés

Bien que chaque objet d’un type spécifique possède les mêmes propriétés, les valeurs de ces propriétés décrivent l’objet particulier. Par exemple, chaque objetFileInfo 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 est d’utiliser la méthode dot. Tapez une référence à l’objet, comme une variable qui contient l’objet, ou une commande qui obtient l’objet. Ensuite, tapez un point (.)suivi du nom de la propriété.

Par exemple, la commande suivante affiche la valeur de la propriété CreationTime du fichier PowerShell.exe. La commande Get-ChildItem renvoie un objetFileInfo qui représente le fichier PowerShell.exe. La commande est mise entre parenthèses pour s’assurer qu’elle est exécutée avant l’accès à toute propriété. La commande Get-ChildItem est suivie d’un point et du nom de la propriété CreationTime, comme suit :

(Get-ChildItem $pshome\PowerShell.exe).creationtime
Tuesday, March 18, 2008 12:07:52 AM

Vous pouvez également enregistrer un objet dans une variable, puis obtenir ses propriétés en utilisant la méthode du point, comme le montre l’exemple suivant :

$a = Get-ChildItem $pshome\PowerShell.exe$a.CreationTime
Tuesday, March 18, 2008 12:07:52 AM

Vous pouvez également utiliser les cmdlets Select-Object et Format-List pour afficher les valeurs des propriétés d’un objet. Select-Object et Format-List ont chacune un paramètreProperty. 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 (*) pour représenter toutes les propriétés.

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

Get-ChildItem $pshome\PowerShell.exe | Format-List -Property *
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System3 2\WindowsPowerShell\v1.0\PowerShell.exePSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System3 2\WindowsPowerShell\v1.0PSChildName : PowerShell.exePSDrive : CPSProvider : Microsoft.PowerShell.Core\FileSystemPSIsContainer : FalseMode : -a----VersionInfo : File: C:\Windows\System32\WindowsPowerShell\ v1.0\PowerShell.exe InternalName: POWERSHELL OriginalFilename: PowerShell.EXE.MUI FileVersion: 10.0.16299.15 (WinBuild.160101.0800) FileDescription: Windows PowerShell Product: Microsoft Windows Operating System ProductVersion: 10.0.16299.15 Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language: English (United States)BaseName : PowerShellTarget : {C:\Windows\WinSxS\amd64_microsoft-windows-powershell-ex e_31bf3856ad364e35_10.0.16299.15_none_8c022aa6735716ae\p owershell.exe}LinkType : HardLinkName : PowerShell.exeLength : 449024DirectoryName : C:\Windows\System32\WindowsPowerShell\v1.0Directory : C:\Windows\System32\WindowsPowerShell\v1.0IsReadOnly : FalseExists : TrueFullName : C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exExtension : .exeCreationTime : 9/29/2017 6:43:19 AMCreationTimeUtc : 9/29/2017 1:43:19 PMLastAccessTime : 9/29/2017 6:43:19 AMLastAccessTimeUtc : 9/29/2017 1:43:19 PMLastWriteTime : 9/29/2017 6:43:19 AMLastWriteTimeUtc : 9/29/2017 1:43:19 PMAttributes : 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 du cmdletGet-Member.

Par exemple, la commande suivante obtient les propriétés statiques de la classeSystem.DateTime.

Get-Date | Get-Member -MemberType Property -Static
TypeName: System.DateTimeName 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.

::<Property>

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

::UtcNow

Propriétés des objets scalaires et des collections

Les propriétés d’un objet (« scalaire ») d’un type particulier sont souvent différentes des propriétés d’une collection d’objets du même type.Par exemple, chaque service a comme propriété DisplayName, mais une collection de services n’a pas de propriété DisplayName.

La commande suivante obtient la valeur de la propriété DisplayName du service ‘Audiosrv’.

(Get-Service Audiosrv).DisplayName
Windows Audio

Depuis PowerShell 3.0, PowerShell essaie d’éviter les erreurs de script quiresultent des propriétés différentes des objets scalaires et des collections. La même commande renvoie la valeur de la propriété DisplayName de chaque service que Get-Service renvoie.

(Get-Service).DisplayName
Application ExperienceApplication Layer Gateway ServiceWindows All-User Install AgentApplication IdentityApplication Information...

Lorsque vous soumettez une collection, mais demandez une propriété qui n’existe que sur des objets uniques (« scalaires »), PowerShell renvoie la valeur de cette propriété pour chaque objet de la collection.

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

(Get-Service).Count
176

À partir de PowerShell 3.0, si vous demandez la propriété Count ou Length dezéro objets ou d’un seul objet, PowerShell renvoie la valeur correcte.

(Get-Service Audiosrv).Count
1

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

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.