คุณสามารถรับคุณสมบัติตามชื่อโดยใช้Select-Object
cmdlet และระบุชื่อคุณสมบัติที่คุณสนใจโปรดทราบว่าสิ่งนี้ไม่เพียงส่งคืนค่าดิบสำหรับคุณสมบัตินั้น แทนที่จะได้รับสิ่งที่ยังคงทำตัวเหมือนสิ่งของ
[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
ค่อนข้างถูกต้องคนอื่น ๆ ตอบคำถามนี้โดยแนะนำ-ExpandProperty
พารามิเตอร์สำหรับSelect-Object
cmdlet สิ่งนี้จะหลีกเลี่ยงความปวดหัวบางอย่างโดยการส่งคืนค่าคุณสมบัติที่ระบุ แต่คุณจะต้องใช้วิธีการที่แตกต่างกันในสถานการณ์ต่างๆ
-ExpandProperty <String>
ระบุคุณสมบัติที่จะเลือกและระบุว่าควรพยายามขยายคุณสมบัตินั้น
https://technet.microsoft.com/en-us/library/hh849895.aspx
[PS]> (Get-Process)[0] | Select-Object -ExpandProperty Name
armsvc
PowerShell ตัวแปร
select -expand "SomeProp"
ถ้าคุณต้องการค่าselect "SomeProp"
ส่งคืนวัตถุที่กำหนดเองด้วยคุณสมบัติ "SomeProp" จากนั้นเขาก็กลับมาที่ขั้นตอนที่ 1