Bạn có thể nhận một thuộc tính theo tên bằng cách sử dụng Select-Object
lệnh ghép ngắn và chỉ định (các) tên thuộc tính mà bạn quan tâm. Lưu ý rằng điều này không chỉ đơn giản trả về giá trị thô cho thuộc tính đó; thay vào đó bạn nhận được một cái gì đó vẫn hành xử như một đối tượng.
[PS]> $property = (Get-Process)[0] | Select-Object -Property Name
[PS]> $property
Name
----
armsvc
[PS]> $property.GetType().FullName
System.Management.Automation.PSCustomObject
Để sử dụng giá trị cho thuộc tính đó, bạn vẫn sẽ cần xác định thuộc tính nào bạn đang theo đuổi, ngay cả khi chỉ có một thuộc tính:
[PS]> $property.Name
armsvc
[PS]> $property -eq "armsvc"
False
[PS]> $property.Name -eq "armsvc"
True
[PS]> $property.Name.GetType().FullName
System.String
Theo các câu trả lời khác ở đây, nếu bạn muốn sử dụng một thuộc tính trong một chuỗi, bạn cần đánh giá biểu thức (đặt dấu ngoặc quanh nó) và tiền tố với ký hiệu đô la ($) để khai báo biểu thức một cách linh hoạt như một biến được chèn vào chuỗi:
[PS]> "The first process in the list is: $($property.Name)"
The first process in the list is: armsvc
Hoàn toàn chính xác, những người khác đã trả lời câu hỏi này bằng cách giới thiệu -ExpandProperty
tham số cho Select-Object
lệnh ghép ngắn. Điều này bỏ qua một số vấn đề đau đầu bằng cách trả về giá trị của tài sản được chỉ định, nhưng bạn sẽ muốn sử dụng các phương pháp khác nhau trong các tình huống khác nhau.
-ExpandProperty <String>
Chỉ định một thuộc tính cần chọn và chỉ ra rằng cần thực hiện một nỗ lực để mở rộng thuộc tính đó
https://technet.microsoft.com/en-us/l Library / hh849895.aspx
[PS]> (Get-Process)[0] | Select-Object -ExpandProperty Name
armsvc
quyền hạn biến
select -expand "SomeProp"
nếu bạn muốn giá trị.select "SomeProp"
trả về một tùy chỉnh với một thuộc tính "someProp", và sau đó anh ta quay lại khá nhiều ở bước 1.