Partager via


À propos des membres intrinsèques

Brève description

Fournit des informations sur les membres intrinsèques de PowerShell disponibles pour tous les objets PowerShell.

Description détaillée

Lorsque des objets sont créés, PowerShell ajoute certaines propriétés et méthodes « masquées » à chaque objet. Les membres intrinsèques, appelés propriétés et méthodes, sont connus sous le nom de . Ces membres intrinsèques sont normalement masqués de la vue. Ces membres cachés peuvent être vus en utilisant le paramètre Force de Get-Member.

Vues des objets

Les membres intrinsèques incluent un ensemble de propriétés MemberSet qui représentent une vue de l’objet. Pour plus d’informations sur les propriétés MemberSet, veuillez consulter la section PSMemberSet.

Chaque objet PowerShell inclut les propriétés suivantes.

  • psbase

    Le psbaseMemberSet contient les membres de l’objet de base sans extension ni adaptation. Selon le type d’objet, il s’agit d’une instance .NET encapsulée par une instance [psobject] ou, s’il n’y a pas de wrapper, il s’agit de l’objet d’entrée lui-même.

  • psadapted

    Le psadaptedMemberSet affiche l’objet de base ainsi que les membres adaptés, le cas échéant. Les membres adaptés sont ajoutés par le Extended Type System (ETS).

  • psextended

    Le psextendedMemberSetonly affiche uniquement les membres ajoutés par les fichiers Types.ps1xml et le cmdlet Add-Member. Tout objet peut être étendu au moment de l’exécution à l’aide de l’applet de commande Add-Member.

  • psobject

    Le psobjectMemberSet est une source riche de réflexion pour tout objet qui contient des méthodes, des propriétés et d’autres informations sur l’objet.

Exemples

Pour cet exemple, $hash est une table de hachage contenant des informations sur un utilisateur. Le paramètre Force de Get-Member nous montre les membres intrinsèques de l’objet.

$hash = @{
    Age  = 33
    Name = 'Bob'
}

$hash | Get-Member -Force -MemberType MemberSet, CodeProperty
   TypeName: System.Collections.Hashtable

Name        MemberType   Definition
----        ----------   ----------
pstypenames CodeProperty System.Collections.ObjectModel.Collection`1[[System.String, System.Private.CoreLib, Version=7…
psadapted   MemberSet    psadapted {Item, IsReadOnly, IsFixedSize, IsSynchronized, Keys, Values, SyncRoot, Count, Add,…
psbase      MemberSet    psbase {Item, IsReadOnly, IsFixedSize, IsSynchronized, Keys, Values, SyncRoot, Count, Add, Cl…
psextended  MemberSet    psextended {}
psobject    MemberSet    psobject {Members, Properties, Methods, ImmediateBaseObject, BaseObject, TypeNames, get_Membe…

L’utilisation de psobject est similaire à l’utilisation de Get-Member, mais offre plus de flexibilité. Par exemple, vous pouvez énumérer les propriétés d’un objet et leurs valeurs.

$hash.psobject.Properties | Select-Object Name, MemberType, Value
Name           MemberType                    Value
----           ----------                    -----
IsReadOnly       Property                    False
IsFixedSize      Property                    False
IsSynchronized   Property                    False
Keys             Property              {Age, Name}
Values           Property                {33, Bob}
SyncRoot         Property {[Age, 33], [Name, Bob]}
Count            Property                        2

Comparez cela à l’objet créé en convertissant la table de hachage en PSCustomObject.

$user = [pscustomobject]$hash
$user.psobject.Properties | Select-Object Name, MemberType, Value
Name   MemberType Value
----   ---------- -----
Age  NoteProperty    33
Name NoteProperty   Bob

Notez que les clés de la table de hachage ont été converties en propriétés dans le PSCustomObject. Les nouvelles propriétés font maintenant partie du psextendedMemberSet.

$user | Get-Member -Force -MemberType MemberSet, CodeProperty
   TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
pstypenames CodeProperty System.Collections.ObjectModel.Collection`1[[System.String, System.Private.CoreLib, Version=7…
psadapted   MemberSet    psadapted {ToString, GetType, Equals, GetHashCode}
psbase      MemberSet    psbase {ToString, GetType, Equals, GetHashCode}
psextended  MemberSet    psextended {Age, Name}
psobject    MemberSet    psobject {Members, Properties, Methods, ImmediateBaseObject, BaseObject, TypeNames, get_Membe…

Informations de type

Le pstypenamesCodeProperty répertorie la hiérarchie des types d’objets dans l’ordre d’héritage. Par exemple:

$file = Get-Item C:\temp\test.txt
$file.pstypenames
System.IO.FileInfo
System.IO.FileSystemInfo
System.MarshalByRefObject
System.Object

La sortie commence par le type d’objet le plus spécifique, System.IO.FileInfo, et continue jusqu’au type le plus générique, System.Object.

Méthode

PowerShell ajoute deux méthodes masquées à tous les objets PowerShell. Ces méthodes ne sont pas visibles en utilisant la commande Get-Member -Force ou la complétion par tabulation.

ForEach() et Where()

Les méthodes ForEach() et Where() sont disponibles pour tous les objets PowerShell. En revanche, ils sont particulièrement utiles pour travailler avec des collections. Pour plus d’informations sur l’utilisation de ces méthodes, consultez about_Arrays.

Propriétés

Pas tous les types scalaires possèdent des propriétés Count ou Length dans le type de base. PowerShell ajoute la propriété manquante en tant que membre intrinsèque pour tous les types scalaires.

Remarque

Les variables non initialisées sont implicitement $null. $null est scalaire et a un nombre intrinsèque et une longueur intrinsèque de 0.

Bien que les propriétés Count et Length soient similaires, elles peuvent fonctionner différemment en fonction du type de données. Par exemple, la longueur d’une chaîne est le nombre de caractères dans la chaîne. La propriété Count correspond au nombre d’instances de l’objet.

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

Pour plus d’informations sur ces propriétés, veuillez consulter la section about_Properties.

Types scalaires d’indexation de tableau

Lorsqu’un objet n’est pas une collection indexée, l’utilisation de l’opérateur d’index pour accéder au premier élément retourne l’objet lui-même. Les valeurs d’index au-delà du premier élément retournent $null.

PS> (2)[0]
2
PS> (2)[-1]
2
PS> (2)[1] -eq $null
True
PS> (2)[0,0] -eq $null
True

Pour plus d’informations, veuillez consulter la section about_Operators.

Méthode New() pour les types

À compter de PowerShell 5.0, PowerShell ajoute une méthode de New() statique pour tous les types .NET. Les exemples suivants produisent le même résultat.

$expression = New-Object -TypeName regex -ArgumentList 'pattern'
$expression = [regex]::new('pattern')

L’utilisation de la méthode new() fonctionne mieux que d’utiliser New-Object.

Pour plus d’informations, consultez about_Classes.