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 der 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 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 verfügen über Eigenschaften. Eigenschaften sind die Daten, die einem -Objekt zugeordnet sind. Verschiedene Objekttypen weisen unterschiedliche Eigenschaften auf. Beispielsweise verfügt ein FileInfo-Objekt, das eine Datei darstellt, über eine IsReadOnly-Eigenschaft , die $True enthält, wenn die Datei das schreibgeschützte Attribut 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, um die Get-Member
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 zu Get-Member
senden. Der folgende Befehl ruft die PowerShell.exe-Datei ab und sendet sie an Get-Member
.
Die $Pshome automatische Variable enthält den Pfad des PowerShell-Installationsverzeichnisses.
Get-ChildItem $pshome\PowerShell.exe | Get-Member
Die Ausgabe des Befehls listet die Member des FileInfo-Objekts auf. Member umfassen 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 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.
Eigenschaftswerte
Obwohl jedes Objekt eines bestimmten Typs über dieselben Eigenschaften verfügt, beschreiben die Werte dieser Eigenschaften das jeweilige Objekt. Beispielsweise verfügt jedes FileInfo-Objekt über eine CreationTime-Eigenschaft, aber der Wert dieser Eigenschaft unterscheidet sich für jede Datei.
Die gängigste 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 Eigenschaftennamen ein.
Der folgende Befehl zeigt beispielsweise den Wert der CreationTime-Eigenschaft der PowerShell.exe-Datei an. Der Get-ChildItem
Befehl gibt ein FileInfo-Objekt zurück, das die PowerShell.exe-Datei darstellt. Der Befehl wird in Klammern eingeschlossen, um sicherzustellen, dass er ausgeführt wird, bevor auf Eigenschaften zugegriffen wird. Auf den 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 Select-Object
Cmdlets 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 Property-Parameter verwenden, um eine oder mehrere Eigenschaften und deren Werte anzugeben. Alternativ können Sie das Wildcardzeichen (*
) verwenden, um alle Eigenschaften darzustellen.
Der folgende Befehl zeigt beispielsweise die Werte aller Eigenschaften der PowerShell.exe-Datei an.
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.
Verwenden Sie zum Abrufen der statischen Eigenschaften einer Klasse den Static-Parameter des Cmdlets Get-Member.
Mit dem folgenden Befehl werden beispielsweise die statischen Eigenschaften der System.DateTime
-Klasse abgerufen.
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
Wenn Sie ab PowerShell 3.0 den Memberzugriffsoperator (.
) verwenden, um auf eine Eigenschaft zuzugreifen, die nicht in einer Listensammlung 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 zurückgegebenen Get-Service
Diensts zurück.
(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 in der Auflistung vorhanden sind.
(Get-Service).Count
176
Wenn Sie ab PowerShell 3.0 die Count - oder Length-Eigenschaft von null- oder einem Objekt anfordern, gibt PowerShell den richtigen Wert zurück.
(Get-Service Audiosrv).Count
1
Wenn eine -Eigenschaft für die einzelnen Objekte und für 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