about_Properties

Kurze Beschreibung

Beschreibt die Verwendung von Objekteigenschaften in PowerShell.

Lange Beschreibung

PowerShell verwendet strukturierte Auflistungen von Informationen, die als Objekte bezeichnet werden, um die Elemente in Datenspeichern oder den Zustand des Computers darzustellen. In der Regel arbeiten Sie mit Objekten, die Teil von Microsoft .NET Framework sind, aber Sie können auch benutzerdefinierte Objekte in PowerShell erstellen.

Die Zuordnung zwischen einem Element und seinem Objekt ist sehr nah. Wenn Sie ein Objekt ändern, ändern Sie in der Regel das Element, das es darstellt. Wenn Sie beispielsweise eine Datei in PowerShell erhalten, erhalten Sie die eigentliche Datei nicht. Stattdessen erhalten Sie ein FileInfo-Objekt , das die Datei darstellt. Wenn Sie das FileInfo-Objekt ändern, ändert sich auch die Datei.

Die meisten Objekte weisen Eigenschaften auf. Eigenschaften sind die Daten, die einem Objekt zugeordnet sind. Verschiedene Objekttypen weisen unterschiedliche Eigenschaften auf. Ein FileInfo-Objekt, das eine Datei darstellt, verfügt beispielsweise über eine IsReadOnly-Eigenschaft, die enthält$True, wenn die Datei über das schreibgeschützte Attribut verfügt und $False nicht. Ein DirectoryInfo -Objekt, das ein Dateisystemverzeichnis darstellt, verfügt über eine übergeordnete Eigenschaft, die den Pfad zum übergeordneten Verzeichnis enthält.

Objekteigenschaften

Verwenden Sie das Get-Member Cmdlet, um die Eigenschaften eines Objekts abzurufen. Um beispielsweise die Eigenschaften eines FileInfo-Objekts abzurufen, verwenden Sie das Get-ChildItem Cmdlet, um das FileInfo-Objekt abzurufen, das eine Datei darstellt. Verwenden Sie dann einen Pipelineoperator (|), um das FileInfo-Objekt an Get-Member. Der folgende Befehl ruft die pwsh.exe Datei ab und sendet sie an Get-Member. Die $PSHOME automatische Variable enthält den Pfad des PowerShell-Installationsverzeichnisses.

Get-ChildItem $PSHOME\pwsh.exe | Get-Member

Die Ausgabe des Befehls listet die Elemente des FileInfo-Objekts auf. Elemente enthalten sowohl Eigenschaften als auch Methoden. Wenn Sie in PowerShell arbeiten, haben Sie Zugriff auf alle Member der Objekte.

Um nur die Eigenschaften eines Objekts und nicht die Methoden abzurufen, verwenden Sie den MemberType-Parameter des Get-Member Cmdlets mit einem Wert von Property, wie im folgenden Beispiel gezeigt.

Get-ChildItem $PSHOME\pwsh.exe | Get-Member -MemberType Property
TypeName: System.IO.FileInfo

Name              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;}

Nachdem Sie die Eigenschaften gefunden haben, können Sie sie in Ihren PowerShell-Befehlen verwenden.

Eigenschaftswerte

Obwohl jedes Objekt eines bestimmten Typs dieselben Eigenschaften aufweist, beschreiben die Werte dieser Eigenschaften das jeweilige Objekt. Beispielsweise verfügt jedes FileInfo-Objekt über eine CreationTime-Eigenschaft , der Wert dieser Eigenschaft unterscheidet sich jedoch für jede Datei.

Die am häufigsten verwendete Methode zum Abrufen der Werte der Eigenschaften eines Objekts besteht darin, den Memberzugriffsoperator (.) zu verwenden. Geben Sie einen Verweis auf das Objekt ein, z. B. eine Variable, die das Objekt enthält, oder einen Befehl, der das Objekt abruft. Geben Sie dann den Operator (.) gefolgt vom Eigenschaftennamen ein.

Mit dem folgenden Befehl wird beispielsweise der Wert der CreationTime-Eigenschaft der pwsh.exe Datei angezeigt. Der Get-ChildItem Befehl gibt ein FileInfo -Objekt, das die pwsh.exe file. Der Befehl ist in Klammern eingeschlossen, um sicherzustellen, dass er ausgeführt wird, bevor auf Eigenschaften zugegriffen wird.

(Get-ChildItem $PSHOME\pwsh.exe).CreationTime
Wednesday, June 15, 2022 5:26:00 PM

Sie können ein Objekt auch in einer Variablen speichern und dann seine Eigenschaften mithilfe der Memberzugriffsmethode (.) abrufen, wie im folgenden Beispiel gezeigt:

$a = Get-ChildItem $PSHOME\pwsh.exe
$a.CreationTime
Wednesday, June 15, 2022 5:26:00 PM

Sie können die Eigenschaftswerte eines Objekts auch mit den Select-Object Cmdlets Format-List anzeigen. Select-Object und Format-List verfügen jeweils über einen Property-Parameter . Sie können den Property-Parameter verwenden, um eine oder mehrere Eigenschaften und deren Werte anzugeben. Sie können auch das Wild Karte Zeichen (*) verwenden, um alle Eigenschaften darzustellen.

Mit dem folgenden Befehl werden beispielsweise die Werte aller Eigenschaften der datei pwsh.exe angezeigt.

Get-ChildItem $PSHOME\pwsh.exe | Format-List -Property *
PSPath              : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7\pwsh.exe
PSParentPath        : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7
PSChildName         : pwsh.exe
PSDrive             : C
PSProvider          : Microsoft.PowerShell.Core\FileSystem
PSIsContainer       : False
Mode                : -a---
ModeWithoutHardLink : -a---
VersionInfo         : File:             C:\Program Files\PowerShell\7\pwsh.exe
                      InternalName:     pwsh.dll
                      OriginalFilename: pwsh.dll
                      FileVersion:      7.2.5.500
                      FileDescription:  pwsh
                      Product:          PowerShell
                      ProductVersion:   7.2.5 SHA: 0aad398b0e918ce7d73dca929ca6395639085b21
                      Debug:            False
                      Patched:          False
                      PreRelease:       False
                      PrivateBuild:     False
                      SpecialBuild:     False
                      Language:         Language Neutral

BaseName            : pwsh
Target              :
LinkType            :
Length              : 287648
DirectoryName       : C:\Program Files\PowerShell\7
Directory           : C:\Program Files\PowerShell\7
IsReadOnly          : False
FullName            : C:\Program Files\PowerShell\7\pwsh.exe
Extension           : .exe
Name                : pwsh.exe
Exists              : True
CreationTime        : 6/15/2022 5:26:00 PM
CreationTimeUtc     : 6/15/2022 10:26:00 PM
LastAccessTime      : 7/18/2022 11:32:06 AM
LastAccessTimeUtc   : 7/18/2022 4:32:06 PM
LastWriteTime       : 6/15/2022 5:26:00 PM
LastWriteTimeUtc    : 6/15/2022 10:26:00 PM
LinkTarget          :
Attributes          : Archive

Statische Eigenschaften

Sie können die statischen Eigenschaften von .NET-Klassen in PowerShell verwenden. Statische Eigenschaften sind Eigenschaften der Klasse, im Gegensatz zu Standardeigenschaften, die Eigenschaften eines Objekts sind.

Verwenden Sie den Static-Parameter des Get-Member Cmdlets, um die statischen Eigenschaften einer Klasse abzurufen. Beispielsweise ruft der folgende Befehl die statischen Eigenschaften der System.DateTime Klasse ab.

Get-Date | Get-Member -MemberType Property -Static
TypeName: System.DateTime

Name     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;}

Verwenden Sie die folgende Syntax, um den Wert einer statischen Eigenschaft abzurufen.

[<ClassName>]::<Property>

Der folgende Befehl ruft beispielsweise den Wert der statischen UtcNow-Eigenschaft der System.DateTime Klasse ab.

[System.DateTime]::UtcNow

Memberzugriffsenumeration

Ab PowerShell 3.0 zählt PowerShell automatisch die Elemente in der Auflistung auf, wenn Sie den Memberzugriffsoperator (.) verwenden, um auf eine Eigenschaft zuzugreifen, die in einer Listensammlung nicht vorhanden ist. Weitere Informationen finden Sie unter about_Member-Access_Enumeration.

Beispiele

Dieser Befehl gibt den Wert der DisplayName-Eigenschaft jedes Diensts zurück, der Get-Service zurückgegeben wird.

(Get-Service).DisplayName
Application Experience
Application Layer Gateway Service
Windows All-User Install Agent
Application Identity
Application Information
...

Alle Auflistungen verfügen über eine Count-Eigenschaft , die die Anzahl der Objekte in der Auflistung zurückgibt.

(Get-Service).Count
176

Ab PowerShell 3.0 können Sie die Count - oder Length-Eigenschaft von Singleton-Objekten abrufen, die keine Auflistungen sind.

(Get-Service Audiosrv).Count
1

Einige Objekte weisen jedoch eine Length-Eigenschaft auf. Beispielsweise ist die Länge einer Zeichenfolge 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

Wenn eine Eigenschaft für die einzelnen Objekte und die Auflistung vorhanden ist, wird nur die Eigenschaft der Auflistung zurückgegeben.

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

Weitere Informationen