Informationen zu intrinsischen Elementen
Kurze Beschreibung
Stellt Informationen zu den systeminternen Elementen von PowerShell bereit, die für alle PowerShell-Objekte verfügbar sind.
Detaillierte Beschreibung
Wenn Objekte erstellt werden, fügt PowerShell jedem Objekt einige "ausgeblendete" Eigenschaften und Methoden hinzu. Diese Eigenschaften und Methoden werden als intrinsische Member bezeichnet. Diese intrinsischen Elemente werden normalerweise vor der Ansicht ausgeblendet. Diese ausgeblendeten Member können mithilfe des Force-Parameters von Get-Member angezeigt werden.
Objektansichten
Die systeminternen Member enthalten eine Reihe von MemberSet-Eigenschaften , die eine Sicht des Objekts darstellen. Weitere Informationen zu MemberSet-Eigenschaften finden Sie unter PSMemberSet.
Jedes PowerShell-Objekt enthält die folgenden Eigenschaften.
psbase
Das
psbase
MemberSet enthält die Member des Basisobjekts ohne Erweiterung oder Anpassung. Je nach Objekttyp handelt es sich entweder um ein .NET-instance, das von einem[psobject]
instance umschlossen wird, oder, wenn kein Wrapper vorhanden ist, das Eingabeobjekt selbst.psadapted
Das
psadapted
MemberSet zeigt das Basisobjekt sowie die angepassten Member an, falls vorhanden. Angepasste Member werden vom Erweiterten Typsystem (ETS) hinzugefügt.psextended
Das
psextended
MemberSet zeigt nur die Elemente an, die von den Dateien Types.ps1xml und dem Cmdlet Add-Member hinzugefügt wurden. Jedes Objekt kann zur Laufzeit mit demAdd-Member
Cmdlet erweitert werden.psobject
MemberSet
psobject
ist eine umfassende Reflexionsquelle für jedes Objekt, das Methoden, Eigenschaften und andere Informationen zum Objekt enthält.
Beispiele
In diesem Beispiel ist eine Hashtabelle, $hash
die Informationen zu einem Benutzer enthält.
Der Force-Parameter von Get-Member
zeigt die intrinsischen Elemente des Objekts an.
$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…
Die Verwendung psobject
ähnelt der Verwendung, Get-Member
bietet jedoch mehr Flexibilität. Beispielsweise können Sie die Eigenschaften eines Objekts und deren Werte aufzählen.
$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
Vergleichen Sie dies mit dem Objekt, das durch Konvertieren der Hashtabelle in ein PSCustomObject erstellt wurde.
$user = [pscustomobject]$hash
$user.psobject.Properties | Select-Object Name, MemberType, Value
Name MemberType Value
---- ---------- -----
Age NoteProperty 33
Name NoteProperty Bob
Beachten Sie, dass die Schlüssel aus der Hashtabelle in Eigenschaften im PSCustomObject konvertiert wurden. Die neuen Eigenschaften sind jetzt Teil des psextended
MemberSets.
$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…
Typinformationen
CodePropertypstypenames
listet die Objekttyphierarchie in der Reihenfolge der Vererbung auf. Beispiel:
$file = Get-Item C:\temp\test.txt
$file.pstypenames
System.IO.FileInfo
System.IO.FileSystemInfo
System.MarshalByRefObject
System.Object
Die Ausgabe beginnt mit dem spezifischsten Objekttyp , System.IO.FileInfo
und wird bis zum generischsten Typ, System.Object
fortgesetzt.
Methoden
PowerShell fügt allen PowerShell-Objekten zwei ausgeblendete Methoden hinzu. Diese Methoden werden nicht mit der Get-Member -Force
Befehls- oder Registerkarten-Vervollständigung angezeigt.
ForEach() und Where()
Die ForEach()
Methoden und Where()
sind für alle PowerShell-Objekte verfügbar.
Sie sind jedoch am nützlichsten, wenn Sie mit Sammlungen arbeiten. Weitere Informationen zur Verwendung dieser Methoden finden Sie unter about_Arrays.
Eigenschaften
Die Count - und Length-Eigenschaften sind für alle PowerShell-Objekte verfügbar, nicht nur für Sammlungen. Diese ähneln einander, funktionieren jedoch je nach Datentyp unterschiedlich. Die Länge einer Zeichenfolge ist beispielsweise die Anzahl der Zeichen in der Zeichenfolge. Die Count-Eigenschaft ist die Anzahl der Instanzen des -Objekts.
PS> $str = 'string'
PS> $str.Length
6
PS> $str.Count
1
Weitere Informationen zu diesen Eigenschaften finden Sie unter about_Properties.
Skalare Arrayindizierungstypen
Wenn ein Objekt keine indizierte Auflistung ist, gibt die Verwendung des Indexoperators für den Zugriff auf das erste Element das Objekt selbst zurück. Indexwerte, die über das erste Element hinausgehen, geben zurück $null
.
PS> (2)[0]
2
PS> (2)[-1]
2
PS> (2)[1] -eq $null
True
PS> (2)[0,0] -eq $null
True
Weitere Informationen finden Sie unter about_Operators.
New()-Methode für Typen
Ab PowerShell 5.0 fügt PowerShell eine statische New()
Methode für alle .NET-Typen hinzu. Die folgenden Beispiele erzeugen das gleiche Ergebnis.
$expression = New-Object -TypeName regex -ArgumentList 'pattern'
$expression = [regex]::new('pattern')
Die Verwendung der new()
-Methode ist besser als die Verwendung von New-Object
.
Weitere Informationen finden Sie unter about_Classes.