Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Brève description
Fournit des informations sur les membres intrinsèques de PowerShell disponibles pour tous les objets PowerShell.
Description longue
Lorsque des objets sont créés, PowerShell ajoute certaines propriétés et méthodes « masquées » à chaque objet. Ces propriétés et méthodes sont appelées membres intrinsèques. Ces membres intrinsèques sont normalement masqués de la vue. Ces membres masqués sont visibles à l’aide du paramètre Force de Get-Member .
Vues d’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 propriétés MemberSet, consultez PSMemberSet .
Chaque objet PowerShell inclut les propriétés suivantes.
psbaseLe
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.psadaptedLe
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 système de type étendu (ETS).psextendedLe
psextendedMemberSetuniquement affiche les membres ajoutés par les fichiers Types.ps1xml et l’applet de commande Add-Member. Tout objet peut être étendu au moment de l’exécution à l’aide de l’applet de commandeAdd-Member.psobjectLe
psobjectMemberSet une source riche de réflexion pour tout objet qui inclut 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 désormais partie de l’ensemble de membres psextended.
$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éthodes
PowerShell ajoute deux méthodes masquées à tous les objets PowerShell. Ces méthodes ne sont pas visibles à l’aide de la commande Get-Member -Force ou de la saisie semi-automatique de tabulation.
ForEach() et Where()
Les méthodes ForEach() et Where() sont disponibles pour tous les objets PowerShell.
Toutefois, ils sont les plus utiles lors de l’utilisation de collections. Pour plus d’informations sur l’utilisation de ces méthodes, consultez about_Arrays.
Propriétés
Tous les types scalaires ne possèdent pas 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.
Note
Les variables non initialisées sont implicitement $null.
$null est scalaire et a un de nombre intrinsèque et longueur 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, consultez 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, consultez about_Operators.
new() méthode 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.