Sie können eine Eigenschaft anhand des Namens mithilfe des Select-Object
Cmdlets abrufen und die Eigenschaftsnamen angeben, an denen Sie interessiert sind. Beachten Sie, dass dies nicht einfach den Rohwert für diese Eigenschaft zurückgibt. Stattdessen erhalten Sie etwas, das sich immer noch wie ein Objekt verhält.
[PS]> $property = (Get-Process)[0] | Select-Object -Property Name
[PS]> $property
Name
----
armsvc
[PS]> $property.GetType().FullName
System.Management.Automation.PSCustomObject
Um den Wert für diese Eigenschaft verwenden zu können, müssen Sie weiterhin angeben, nach welcher Eigenschaft Sie suchen, auch wenn nur eine Eigenschaft vorhanden ist:
[PS]> $property.Name
armsvc
[PS]> $property -eq "armsvc"
False
[PS]> $property.Name -eq "armsvc"
True
[PS]> $property.Name.GetType().FullName
System.String
Wie bei anderen Antworten hier, müssen Sie, wenn Sie eine einzelne Eigenschaft innerhalb einer Zeichenfolge verwenden möchten, den Ausdruck auswerten (umklammern) und ein Dollarzeichen ($) voranstellen, um den Ausdruck dynamisch als einzufügende Variable zu deklarieren in die Zeichenfolge:
[PS]> "The first process in the list is: $($property.Name)"
The first process in the list is: armsvc
Ganz richtig, andere haben diese Frage beantwortet, indem sie den -ExpandProperty
Parameter für das Select-Object
Cmdlet empfohlen haben. Dadurch wird ein Teil der Kopfschmerzen umgangen, indem der Wert der angegebenen Eigenschaft zurückgegeben wird. Sie sollten jedoch in verschiedenen Szenarien unterschiedliche Ansätze verwenden.
-ExpandProperty <String>
Gibt eine auszuwählende Eigenschaft an und gibt an, dass versucht werden soll, diese Eigenschaft zu erweitern
https://technet.microsoft.com/en-us/library/hh849895.aspx
[PS]> (Get-Process)[0] | Select-Object -ExpandProperty Name
armsvc
Power Shell Variablen
select -expand "SomeProp"
Sie daran, zu erweitern: wenn Sie den Wert wollen.select "SomeProp"
gibt ein benutzerdefiniertes Objekt mit der Eigenschaft "SomeProp" zurück, und dann ist er so ziemlich zurück in Schritt 1.