आप cmdlet का उपयोग करके नाम से एक संपत्ति प्राप्त कर सकते हैं Select-Object
और उस संपत्ति के नाम को निर्दिष्ट कर सकते हैं जिसमें आप रुचि रखते हैं। ध्यान दें कि यह केवल उस संपत्ति के लिए कच्चे मूल्य को वापस नहीं करता है; इसके बजाय आपको कुछ ऐसा मिलता है जो अभी भी एक वस्तु की तरह व्यवहार करता है।
[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
काफी सही ढंग से, दूसरों ने cmdlet के -ExpandProperty
लिए पैरामीटर की सिफारिश करके इस सवाल का जवाब दिया है Select-Object
। यह निर्दिष्ट संपत्ति के मूल्य को वापस करके सिरदर्द में से कुछ को दरकिनार कर देता है, लेकिन आप विभिन्न परिदृश्यों में अलग-अलग तरीकों का उपयोग करना चाहेंगे।
-ExpandProperty <String>
एक संपत्ति का चयन करने के लिए निर्दिष्ट करता है, और इंगित करता है कि उस संपत्ति का विस्तार करने का प्रयास किया जाना चाहिए
https://technet.microsoft.com/en-us/library/hh849895.aspx
[PS]> (Get-Process)[0] | Select-Object -ExpandProperty Name
armsvc
शक्ति कोशिका चर
select -expand "SomeProp"
यदि आप मूल्य चाहते हैं।select "SomeProp"
एक प्रॉपर्टी "SomeProp" के साथ एक कस्टमोबोजेक्ट लौटाता है, और फिर वह चरण 1 पर बहुत पीछे है।