可以按名稱使用Select-Object
cmdlet,並指定屬性名(S)你有興趣得到財產請注意,這不是簡單地返回。該財產的原始價值;相反,你得到的東西仍然像對象一樣。
[PS]> $property = (Get-Process)[0] | Select-Object -Property Name
[PS]> $property
Name
----
armsvc
[PS]> $property.GetType().FullName
System.Management.Automation.PSCustomObject
爲了使用值爲該屬性,你還需要確定你是哪個屬性後,即使只有一個屬性:
[PS]> $property.Name
armsvc
[PS]> $property -eq "armsvc"
False
[PS]> $property.Name -eq "armsvc"
True
[PS]> $property.Name.GetType().FullName
System.String
按其他的答案在這裏,如果你想在一個字符串中使用一個單獨的屬性,你需要評估表達式(將括號括起來)並用美元符號($)前綴來動態地聲明表達式作爲要插入到字符串中的變量:
[PS]> "The first process in the list is: $($property.Name)"
The first process in the list is: armsvc
相當正確的是,其他人通過推薦Select-Object
cmdlet的-ExpandProperty
參數來回答此問題。這通過返回指定屬性的值繞過了一些頭痛的問題,但是您會希望在不同的場景中使用不同的方法。
-ExpandProperty <String>
指定屬性來選擇,並指出應該嘗試 進行拓展,物業
https://technet.microsoft.com/en-us/library/hh849895.aspx
[PS]> (Get-Process)[0] | Select-Object -ExpandProperty Name
armsvc
powershellvariables
記得展開:'select -expand「SomeProp」'如果你想要的值。 ''選擇「SomeProp」'返回一個屬性爲「SomeProp」的customobject,然後他幾乎回到第1步。 –
有沒有在'write-host'中使用'$ obj。「SomeProp」'的方法? –
@TheMuffinMan,是的,它是一個普遍適用的功能,像寫主機$ obj。「$ somepropertyname」 –