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