Over intrinsieke leden
Korte beschrijving
Bevat informatie over de intrinsieke leden van PowerShell die beschikbaar zijn voor alle PowerShell-objecten.
Gedetailleerde beschrijving
Wanneer objecten worden gemaakt, voegt PowerShell enkele verborgen eigenschappen en methoden toe aan elk object. Deze eigenschappen en methoden worden intrinsieke leden genoemd. Deze intrinsieke leden worden normaal gesproken verborgen. Deze verborgen leden kunnen worden weergegeven met behulp van de parameter Force van Get-Member.
Objectweergaven
De intrinsieke leden bevatten een set MemberSet-eigenschappen die een weergave van het object vertegenwoordigen. Zie PSMemberSet voor meer informatie over MemberSet-eigenschappen.
Elk PowerShell-object bevat de volgende eigenschappen.
psbase
De
psbase
MemberSet bevat de leden van het basisobject zonder uitbreiding of aanpassing. Afhankelijk van het objecttype is het een .NET-exemplaar dat is verpakt door een[psobject]
exemplaar of, als er geen wrapper is, is dit het invoerobject zelf.psadapted
De
psadapted
MemberSet toont het basisobject plus de aangepaste leden, indien aanwezig. Aangepaste leden worden toegevoegd door het Extended Type System (ETS).psextended
In de
psextended
MemberSet worden alleen de leden weergegeven die zijn toegevoegd door de types.ps1xml-bestanden en de cmdlet Add-Member. Elk object kan tijdens runtime worden uitgebreid met behulp van deAdd-Member
cmdlet.psobject
De
psobject
MemberSet is een rijke bron van weerspiegeling voor elk object dat methoden, eigenschappen en andere informatie over het object bevat.
Voorbeelden
In dit voorbeeld $hash
is een hashtabel met informatie over een gebruiker.
De parameter Force van Get-Member
toont ons de intrinsieke leden van het object.
$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…
Het gebruik psobject
is vergelijkbaar met het gebruik Get-Member
, maar biedt meer flexibiliteit. U kunt bijvoorbeeld de eigenschappen van een object en de bijbehorende waarden opsommen.
$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
Vergelijk dit met het object dat is gemaakt door de hashtabel te converteren naar een PSCustomObject.
$user = [pscustomobject]$hash
$user.psobject.Properties | Select-Object Name, MemberType, Value
Name MemberType Value
---- ---------- -----
Age NoteProperty 33
Name NoteProperty Bob
U ziet dat de sleutels van de hashtabel zijn geconverteerd naar eigenschappen in het PSCustomObject. De nieuwe eigenschappen maken nu deel uit van de psextended
MemberSet.
$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…
Typegegevens
De pstypenames
CodeProperty vermeldt de objecttypehiërarchie in volgorde van overname. Voorbeeld:
$file = Get-Item C:\temp\test.txt
$file.pstypenames
System.IO.FileInfo
System.IO.FileSystemInfo
System.MarshalByRefObject
System.Object
De uitvoer begint met het meest specifieke objecttype, System.IO.FileInfo
en gaat verder naar het meest algemene type, System.Object
.
Methoden
PowerShell voegt twee verborgen methoden toe aan alle PowerShell-objecten. Deze methoden zijn niet zichtbaar met behulp van de Get-Member -Force
opdracht of tabvoltooiing.
ForEach() en Where()
De ForEach()
en Where()
methoden zijn beschikbaar voor alle PowerShell-objecten.
Ze zijn echter het handigst bij het werken met verzamelingen. Zie about_Arrays voor meer informatie over het gebruik van deze methoden.
Eigenschappen
De eigenschappen Aantal en Lengte zijn beschikbaar voor alle PowerShell-objecten, niet alleen voor verzamelingen. Deze zijn vergelijkbaar met elkaar, maar werken mogelijk anders, afhankelijk van het gegevenstype. De lengte van een tekenreeks is bijvoorbeeld het aantal tekens in de tekenreeks. De eigenschap Count is het aantal exemplaren van het object.
PS> $str = 'string'
PS> $str.Length
6
PS> $str.Count
1
Zie about_Properties voor meer informatie over deze eigenschappen.
Scalaire typen matrixindexering
Wanneer een object geen geïndexeerde verzameling is, retourneert het object zelf met behulp van de indexoperator om toegang te krijgen tot het eerste element. Indexwaarden buiten het eerste element retourneren $null
.
PS> (2)[0]
2
PS> (2)[-1]
2
PS> (2)[1] -eq $null
True
PS> (2)[0,0] -eq $null
True
Zie about_Operators voor meer informatie.
Methode New() voor typen
Vanaf PowerShell 5.0 voegt PowerShell een statische New()
methode toe voor alle .NET-typen. De volgende voorbeelden produceren hetzelfde resultaat.
$expression = New-Object -TypeName regex -ArgumentList 'pattern'
$expression = [regex]::new('pattern')
Het gebruik van de new()
methode presteert beter dan het gebruik van New-Object
.
Zie about_Classes voor meer informatie.