Możesz pobrać właściwość według nazwy za pomocą polecenia Select-Object
cmdlet i określając nazwy właściwości, które Cię interesują. Należy pamiętać, że to nie zwraca po prostu wartości surowej dla tej właściwości; zamiast tego otrzymujesz coś, co nadal zachowuje się jak przedmiot.
[PS]> $property = (Get-Process)[0] | Select-Object -Property Name
[PS]> $property
Name
----
armsvc
[PS]> $property.GetType().FullName
System.Management.Automation.PSCustomObject
Aby użyć wartości dla tej właściwości, nadal będziesz musiał określić, której właściwości szukasz, nawet jeśli istnieje tylko jedna właściwość:
[PS]> $property.Name
armsvc
[PS]> $property -eq "armsvc"
False
[PS]> $property.Name -eq "armsvc"
True
[PS]> $property.Name.GetType().FullName
System.String
Podobnie jak w przypadku innych odpowiedzi tutaj, jeśli chcesz użyć pojedynczej właściwości w ciągu, musisz oszacować wyrażenie (umieścić wokół niego nawiasy) i przedrostek ze znakiem dolara ($), aby zadeklarować wyrażenie dynamicznie jako zmienną do wstawienia do ciągu:
[PS]> "The first process in the list is: $($property.Name)"
The first process in the list is: armsvc
Całkiem poprawnie, inni odpowiedzieli na to pytanie, zalecając -ExpandProperty
parametr dla polecenia Select-Object
cmdlet. To omija niektóre problemy, zwracając wartość określonej właściwości, ale będziesz chciał użyć różnych podejść w różnych scenariuszach.
-ExpandProperty <String>
Określa właściwość do wybrania i wskazuje, że należy podjąć próbę rozwinięcia tej właściwości
https://technet.microsoft.com/en-us/library/hh849895.aspx
[PS]> (Get-Process)[0] | Select-Object -ExpandProperty Name
armsvc
powershell zmienne
select -expand "SomeProp"
jeśli chcesz wartość.select "SomeProp"
zwraca obiekt niestandardowy z właściwością „SomeProp”, a następnie prawie wrócił do kroku 1.