Freigeben über


about_Properties

Kurzbeschreibung

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 eng. Wenn Sie ein Objekt ändern, ändern Sie in der Regel das Element, das es darstellt. Wenn Sie z. B. eine Datei in PowerShell abrufen, erhalten Sie nicht die eigentliche Datei. 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 z. B. über eine IsReadOnly-Eigenschaft , die $True enthält, wenn die Datei das schreibgeschützte Attribut ist, und $False, wenn dies nicht der Fall ist. Ein DirectoryInfo-Objekt, das ein Dateisystemverzeichnis darstellt, verfügt über eine Parent-Eigenschaft, die den Pfad zum übergeordneten Verzeichnis enthält.

Objekteigenschaften

Verwenden Sie das Cmdlet Get-Member, um die Eigenschaften eines Objekts abzurufen. Um beispielsweise die Eigenschaften eines FileInfo--Objekts abzurufen, verwenden Sie das cmdlet Get-ChildItem, um das FileInfo-Objekt abzurufen, das eine Datei darstellt. Verwenden Sie dann einen Pipelineoperator (|), um das FileInfo-Objekt an Get-Memberzu senden. Mit dem folgenden Befehl wird die PowerShell.exe Datei abgerufen und an Get-Membergesendet. Die $Pshome automatische Variable enthält den Pfad des PowerShell-Installationsverzeichnisses.

Get-ChildItem $pshome\PowerShell.exe | Get-Member

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

Wenn Sie nur die Eigenschaften eines Objekts und nicht die Methoden abrufen möchten, verwenden Sie den MemberType-Parameter des Get-Member Cmdlets mit dem Wert "property", wie im folgenden Beispiel gezeigt.

Get-ChildItem $pshome\PowerShell.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.

Immobilienwerte

Obwohl jedes Objekt eines bestimmten Typs dieselben Eigenschaften aufweist, beschreiben die Werte dieser Eigenschaften das jeweilige Objekt. Jedes FileInfo-Objekt verfügt z. B. über eine CreationTime-Eigenschaft, aber der Wert dieser Eigenschaft ist für jede Datei unterschiedlich.

Die gebräuchlichste Methode zum Abrufen der Werte der Eigenschaften eines Objekts ist die Verwendung der dot-Methode. 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 einen Punkt (.) gefolgt vom Namen der Eigenschaft ein.

Mit dem folgenden Befehl wird z. B. der Wert der CreationTime-Eigenschaft der PowerShell.exe Datei angezeigt. Der Get-ChildItem Befehl gibt ein FileInfo-Objekt zurück, das die PowerShell.exe Datei darstellt. Der Befehl wird in Klammern gesetzt, um sicherzustellen, dass er ausgeführt wird, bevor auf Eigenschaften zugegriffen wird. Hinter dem Get-ChildItem Befehl folgen ein Punkt und der Name der CreationTime-Eigenschaft wie folgt:

(Get-ChildItem $pshome\PowerShell.exe).creationtime
Tuesday, March 18, 2008 12:07:52 AM

Sie können ein Objekt auch in einer Variablen speichern und dann seine Eigenschaften mithilfe der dot-Methode abrufen, wie im folgenden Beispiel gezeigt:

$a = Get-ChildItem $pshome\PowerShell.exe
$a.CreationTime
Tuesday, March 18, 2008 12:07:52 AM

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

Mit dem folgenden Befehl werden z. B. die Werte aller Eigenschaften der PowerShell.exe Datei angezeigt.

Get-ChildItem $pshome\PowerShell.exe | Format-List -Property *
PSPath            : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System3
                    2\WindowsPowerShell\v1.0\PowerShell.exe
PSParentPath      : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System3
                    2\WindowsPowerShell\v1.0
PSChildName       : PowerShell.exe
PSDrive           : C
PSProvider        : Microsoft.PowerShell.Core\FileSystem
PSIsContainer     : False
Mode              : -a----
VersionInfo       : File:             C:\Windows\System32\WindowsPowerShell\
                    v1.0\PowerShell.exe
                    InternalName:     POWERSHELL
                    OriginalFilename: PowerShell.EXE.MUI
                    FileVersion:      10.0.16299.15 (WinBuild.160101.0800)
                    FileDescription:  Windows PowerShell
                    Product:          Microsoft Windows Operating System
                    ProductVersion:   10.0.16299.15
                    Debug:            False
                    Patched:          False
                    PreRelease:       False
                    PrivateBuild:     False
                    SpecialBuild:     False
                    Language:         English (United States)

BaseName          : PowerShell
Target            : {C:\Windows\WinSxS\amd64_microsoft-windows-powershell-ex
                    e_31bf3856ad364e35_10.0.16299.15_none_8c022aa6735716ae\p
                    owershell.exe}
LinkType          : HardLink
Name              : PowerShell.exe
Length            : 449024
DirectoryName     : C:\Windows\System32\WindowsPowerShell\v1.0
Directory         : C:\Windows\System32\WindowsPowerShell\v1.0
IsReadOnly        : False
Exists            : True
FullName          : C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.ex
Extension         : .exe
CreationTime      : 9/29/2017 6:43:19 AM
CreationTimeUtc   : 9/29/2017 1:43:19 PM
LastAccessTime    : 9/29/2017 6:43:19 AM
LastAccessTimeUtc : 9/29/2017 1:43:19 PM
LastWriteTime     : 9/29/2017 6:43:19 AM
LastWriteTimeUtc  : 9/29/2017 1:43:19 PM
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.

Um die statischen Eigenschaften einer Klasse abzurufen, verwenden Sie den Parameter Static des Cmdlets Get-Member.

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>

Mit dem folgenden Befehl wird z. B. der Wert der statischen UtcNow-Eigenschaft der System.DateTime Klasse abgerufen.

[System.DateTime]::UtcNow

Memberzugriffsenumeration

Wenn Sie ab PowerShell 3.0 den member-access-Operator (.) verwenden, um auf eine Eigenschaft zuzugreifen, die in einer Listenauflistung nicht vorhanden ist, listet PowerShell automatisch die Elemente in der Auflistung auf und gibt den Wert der Eigenschaft für jedes Element zurück. 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ückgibt.

(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 zurückgibt, wie viele Objekte sich in der Auflistung befinden.

(Get-Service).Count
176

Wenn Sie ab PowerShell 3.0 die Count - oder Length-Eigenschaft von null Objekten oder einem Objekt anfordern, gibt PowerShell den richtigen Wert zurück.

(Get-Service Audiosrv).Count
1

Wenn eine Eigenschaft bei den einzelnen Objekten und der Auflistung existiert, wird nur die Eigenschaft der Auflistung zurückgegeben.

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

Siehe auch