about_Properties
Letzte Aktualisierung: Mai 2014
Betrifft: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0
THEMA
about_Properties
KURZE BESCHREIBUNG
Beschreibt, wie Objekteigenschaften in Windows PowerShell verwendet werden.
LANGE BESCHREIBUNG
Windows PowerShell verwendet strukturierte Informationen, sogenannte Objekte, zur Darstellung von Datenspeicherelementen oder Computerstatus. In der Regel verwenden Sie Objekte des Microsoft .NET Framework, können in Windows PowerShell aber auch benutzerdefinierte Objekte erstellen.
Die Zuordnung zwischen einem Element und dessen Objekt ist sehr eng. Wenn Sie ein Objekt ändern, ändert sich in der Regel auch das Element, das dieses Objekt darstellt. Rufen Sie beispielsweise in Windows PowerShell eine Datei ab, so erhalten Sie nicht wirklich die eigentliche Datei. Stattdessen erhalten Sie ein FileInfo-Objekt, das die Datei darstellt. Wenn Sie das FileInfo-Objekt ändern, ändert sich die Datei ebenfalls.
Die meisten Objekte verfügen über Eigenschaften. Eigenschaften sind die mit einem Objekt verbundenen Daten. Verschiedene Objekttypen haben unterschiedliche Eigenschaften. Ein FileInfo-Objekt, das eine Datei darstellt, hat beispielsweise eine IsReadOnly-Eigenschaft, die $True enthält, wenn die Datei das Attribut "read-only" aufweist, 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
Zum Abrufen der Eigenschaften eines Objekts verwenden Sie das Cmdlet Get-Member. Beispielsweise verwenden Sie zum Abrufen der Eigenschaften eines FileInfo-Objekts zunächst das Cmdlet Get-ChildItem, um das FileInfo-Objekt abzurufen, das die Datei darstellt. Danach senden Sie das FileInfo-Objekt mit dem Pipeline-Operator (|) an Get-Member. Folgender Befehl ruft die Datei PowerShell.exe ab und sendet sie an Get-Member. Die automatische Variable $pshome enthält den Pfad zum Installationsverzeichnis von Windows PowerShell.
Get-ChildItem $pshome\PowerShell.exe | Get-Member
Die Ausgabe des Befehls listet die Member des FileInfo-Objekts auf. Member schließen Eigenschaften und Methoden ein. In Windows PowerShell haben Sie Zugriff auf alle Objekt-Member.
Wenn Sie nur die Eigenschaften eines Objekts, nicht aber seine Methoden abrufen möchten, verwenden Sie den Parameter MemberType des Cmdlets Get-Member mit einem property-Wert, 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;}
Die abgerufenen Eigenschaften können Sie dann in Ihren Windows PowerShell-Befehlen verwenden.
EIGENSCHAFTSWERTE
Obwohl jedes Objekt eines bestimmten Typs die gleichen Eigenschaften aufweist, wird das einzelne Objekt allein durch die Werte dieser Eigenschaften beschrieben. Beispielsweise hat jedes FileInfo-Objekt die Eigenschaft CreationTime, aber der Wert dieser Eigenschaft unterscheidet sich von Datei zu Datei.
Die gängigste Methode zum Abrufen der Eigenschaftswerte eines Objekts ist die Punkt-Methode. Geben Sie einen Verweis auf das Objekt ein, zum Beispiel 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.
Der folgende Befehl zeigt zum Beispiel den Wert der Eigenschaft CreationTime der Datei PowerShell.exe an. Der Befehl Get-ChildItem gibt ein FileInfo-Objekt zurück, das die Datei PowerShell.exe darstellt. Der Befehl steht in Klammern, um sicherzustellen, dass er vor dem Zugriff auf die Eigenschaften ausgeführt wird. Auf den Befehl Get-ChildItem folgt ein Punkt und der Name der Eigenschaft CreationTime:
C:\PS> (Get-ChildItem $pshome\PowerShell.exe).creationtime
Tuesday, March 18, 2008 12:07:52 AM
Wie das folgende Beispiel zeigt, können Sie ein Objekt auch in einer Variablen speichern und seine Eigenschaften mithilfe der Punktmethode abrufen:
C:\PS> $a = Get-ChildItem $pshome\PowerShell.exe
C:\PS> $a.CreationTime
Tuesday, March 18, 2008 12:07:52 AM
Auch mit den Cmdlets Select-Object und Format-List können Sie die Eigenschaftswerte eines Objekts anzeigen. Sowohl Select-Object als auch Format-List haben einen Property-Parameter. Mit diesem Property-Parameter können Sie eine oder mehrere Eigenschaften und deren Werte angeben. Alternativ können Sie auch das Platzhalterzeichen (*) zur Darstellung aller Eigenschaften verwenden.
Der folgende Befehl zeigt zum Beispiel die Werte aller Eigenschaften der Datei PowerShell.exe an.
C:\PS> Get-ChildItem $pshome\PowerShell.exe | Format-List -property *
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell.exe
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Windows\system32\WindowsPowerShell\v1.0
PSChildName : PowerShell.exe
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
VersionInfo : File: C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell.exe
InternalName: POWERSHELL
OriginalFilename: PowerShell.EXE.MUI
File Version: 6.1.6570.1 (fbl_srv_PowerShell(nigels).070711-0102)
FileDescription: PowerShell.EXE
Product: Microsoft® Windows® Operating System
ProductVersion: 6.1.6570.1
Debug: False
Patched: False
PreRelease: False
PrivateBuild: True
SpecialBuild: False
Language: English (United States)
BaseName : PowerShell
Mode : -a---
Name : PowerShell.exe
Length : 160256
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.exe
Extension : .exe
CreationTime : 3/18/2008 12:07:52 AM
CreationTimeUtc : 3/18/2008 7:07:52 AM
LastAccessTime : 3/19/2008 8:13:58 AM
LastAccessTimeUtc : 3/19/2008 3:13:58 PM
LastWriteTime : 3/18/2008 12:07:52 AM
LastWriteTimeUtc : 3/18/2008 7:07:52 AM
Attributes : Archive
STATISCHE EIGENSCHAFTEN
In Windows PowerShell können Sie auch die statischen Eigenschaften der .NET-Klassen verwenden. Statische Eigenschaften sind Klasseneigenschaften (im Gegensatz zu Standardeigenschaften, bei denen es sich um Objekteigenschaften handelt).
Zum Abrufen der statischen Eigenschaften einer Klasse verwenden Sie den Parameter Static des Cmdlets Get-Member.
Der folgende Befehl ruft beispielsweise die statischen Eigenschaften der Klasse System.DateTime 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;}
Zum Abrufen des Werts einer statischen Eigenschaft verwenden Sie die folgende Syntax.
[<ClassName>]::<Property>
Der folgende Befehl ruft beispielsweise den Wert der statischen Eigenschaft UtcNow der Klasse System.DateTime ab.
[System.DateTime]::UtcNow
EIGENSCHAFTEN VON SKALAROBJEKTEN UND DATENGRUPPEN
Die Eigenschaften eines einzigen Objekts (dies ist ein Skalarobjekt) eines bestimmten Typs unterscheiden sich häufig von den Eigenschaften einer Datengruppe (Collection) des gleichen Typs.
So weist beispielsweise jeder einzelne Dienst die Eigenschaft DisplayName auf, eine Datengruppe aus Diensten hat diese Eigenschaft hingegen nicht. Dagegen haben alle Datengruppen die Eigenschaft Count, die die Anzahl der Objekte in der Gruppe angibt, während einzelne Objekte diese Eigenschaft nicht haben.
Ab Windows PowerShell 3.0 versucht Windows PowerShell Skriptfehler zu vermeiden, die sich aus den unterschiedlichen Eigenschaften von Skalarobjekten und Datengruppen ergeben.
– Wenn Sie bei der Anforderung einer Eigenschaft für Skalarobjekte eine Datengruppe übergeben, gibt Windows PowerShell den Wert dieser Eigenschaft für jedes Objekt der Datengruppe zurück.
– Wenn Sie die Eigenschaft Count oder Length für kein Objekt oder nur für ein Skalarobjekt anfordern, gibt Windows PowerShell den entsprechenden Wert (0 oder 1) zurück.
Wenn eine Eigenschaft sowohl für die einzelnen Skalarobjekte als auch für die Datengruppe vorhanden ist, ändert Windows PowerShell das Ergebnis nicht.
Dieses Feature funktioniert auch für Methoden für Skalarobjekte und Datengruppen. Weitere Informationen finden Sie unter "about_Methods".
BEISPIELE
Jeder Dienst verfügt beispielsweise über die Eigenschaft DisplayName. Der folgende Befehl ruft den Wert der Eigenschaft DisplayName für den Dienst Audiosrv ab.
PS C:\>(Get-Service Audiosrv).DisplayName
Windows Audio
Eine Datengruppe oder ein Array von Diensten hat dagegen keinen DisplayName. Der folgende Befehl versucht die Eigenschaft DisplayName aller von Windows PowerShell 2.0 bereitgestellten Dienste abzurufen.
PS C:\>(Get-Service).DisplayName
PS C:\>
Ab Windows PowerShell 3.0 gibt der gleiche Befehl den Wert der Eigenschaft DisplayName aller von Get-Service zurückgegebenen Dienste zurück.
PS C:\>(Get-Service).DisplayName
Application Experience
Application Layer Gateway Service
Windows All-User Install Agent
Application Identity
Application Information
...
Umgekehrt hat eine Datengruppe mit zwei oder mehr Diensten eine Count-Eigenschaft, die die Anzahl der Objekte der Datengruppe angibt.
PS C:\>(Get-Service).Count
176
Einzelne Dienste haben dagegen keine Count- oder Length-Eigenschaft, wie dieser in Windows PowerShell 2.0 ausgeführte Befehl zeigt.
PS C:\>(Get-Service Audiosrv).Count
PS C:\>
Ab Windows PowerShell 3.0 gibt der Befehl in beiden Fällen den korrekten Count-Wert zurück.
PS C:\>(Get-Service Audiosrv).Count
1
SIEHE AUCH
about_Methods
about_Objects
Get-Member
Select-Object
Format-List