PowerShell में प्रॉपर्टी नाम से ऑब्जेक्ट की संपत्ति का मूल्य कैसे प्राप्त करें?




(4)

@ एक्विनास पर विस्तार:

Get-something | select -ExpandProperty PropertyName

या

Get-something | select -expand PropertyName

या

Get-something | select -exp PropertyName

मैंने उन सुझावों के लिए ये सुझाव दिए हैं जो कुछ जानकारी प्राप्त करने के लिए केवल एक सिंगल लाइन कमांड की तलाश कर रहे हैं और वास्तविक दुनिया का उदाहरण शामिल करना चाहते हैं।

PowerShell के माध्यम से Office 365 के प्रबंधन में, यहां एक उदाहरण था जिसका उपयोग मैं उन सभी उपयोगकर्ताओं / समूहों को प्राप्त करने के लिए करता था जिन्हें "BookInPolicy" सूची में जोड़ा गया था:

Get-CalendarProcessing [email protected] | Select -expand BookInPolicy

बस "BookInPolicy चुनें" का उपयोग करके कई सदस्यों को काट रहा था, इसलिए इस जानकारी के लिए धन्यवाद!

PowerShell में, आप अपना नाम (एक स्ट्रिंग) निर्दिष्ट करके ऑब्जेक्ट की संपत्ति मान कैसे प्राप्त करते हैं? मुझे कुछ पसंद है:

$obj = get-something

# View the object's members:
$obj | gm

# I could retrieve a property by doing so:
write-host $obj.SomeProp

# But for many purposes, I would really want to:
write-host $obj | Get-PropertyByName "SomeProp"

क्या PowerShell में "Get-PropertyByName" जैसा कुछ है?


आप 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

काफी सही ढंग से, दूसरों ने Select-Object cmdlet के लिए -ExpandProperty पैरामीटर की सिफारिश करके इस प्रश्न का उत्तर दिया है। यह निर्दिष्ट संपत्ति के मूल्य को वापस कर सिरदर्द को छोड़ देता है, लेकिन आप विभिन्न परिदृश्यों में विभिन्न दृष्टिकोणों का उपयोग करना चाहेंगे।

-ExpandProperty <String>

चुनने के लिए एक संपत्ति निर्दिष्ट करता है, और इंगित करता है कि उस संपत्ति का विस्तार करने के लिए प्रयास किया जाना चाहिए

https://technet.microsoft.com/en-us/library/hh849895.aspx

[PS]> (Get-Process)[0] | Select-Object -ExpandProperty Name
armsvc

powershell variables


ज़रूर

write-host ($obj | Select -ExpandProperty "SomeProp")

या उस मामले के लिए:

$obj."SomeProp"

$com1 = new-object PSobject                                                         #Task1
$com2 = new-object PSobject                                                         #Task1
$com3 = new-object PSobject                                                         #Task1



$com1 | add-member noteproperty -name user -value jindpal                           #Task2
$com1 | add-member noteproperty -name code -value IT01                              #Task2
$com1 | add-member scriptmethod ver {[system.Environment]::oSVersion.Version}       #Task3


$com2 | add-member noteproperty -name user -value singh                             #Task2
$com2 | add-member noteproperty -name code -value IT02                              #Task2
$com2 | add-member scriptmethod ver {[system.Environment]::oSVersion.Version}       #Task3


$com3 | add-member noteproperty -name user -value dhanoa                             #Task2
$com3 | add-member noteproperty -name code -value IT03                               #Task2
$com3 | add-member scriptmethod ver {[system.Environment]::oSVersion.Version}        #Task3


$arr += $com1, $com2, $com3                                                          #Task4


write-host "windows version of computer1 is: "$com1.ver()                            #Task3
write-host "user name of computer1 is: "$com1.user                                   #Task6
write-host "code of computer1 is: "$com1,code                                        #Task5
write-host "windows version of computer2 is: "$com2.ver()                            #Task3
write-host "user name of computer2 is: "$com2.user                                   #Task6
write-host "windows version of computer3 is: "$com3.ver()                            #Task3
write-host "user name of computer3 is: "$com1.user                                   #Task6
write-host "code of computer3 is: "$com3,code                                        #Task5

read-host




powershell