সম্পত্তির নাম অনুসারে কোনও বস্তুর সম্পত্তির মান কীভাবে পাবেন?


132

পাওয়ারশেলে আপনি কীভাবে কোনও জিনিসের নাম (স্ট্রিং) নির্দিষ্ট করে তার সম্পত্তির মান পাবেন? আমি নিম্নলিখিত মত কিছু চাই:

$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"

পাওয়ারশেলের "get-PropertiesByName" এর মতো কিছু আছে কি?

উত্তর:


198

অবশ্যই

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

বা এই বিষয়ে:

$obj."SomeProp"

12
মনে রাখবেন প্রসারণ: select -expand "SomeProp"আপনি যদি মানটি চান। select "SomeProp"একটি সম্পত্তি "সাম্প্রপ্রপ" সহ একটি কাস্টমবজেক্ট ফেরত দেয় এবং তারপরে তিনি প্রথম ধাপে ফিরে আসেন
ফ্রয়েড এফ।

2
সেখানে ব্যবহার করার জন্য একটি উপায় আছে কি $obj."SomeProp"মধ্যে write-host?
মাফিন ম্যান

@TheMuffinMan, হ্যাঁ, এটি একটি সাধারণত প্রযোজ্য বৈশিষ্ট্য লেখ হোস্ট $ obj মত "$ somepropertyname" হয়।
Elroy ফ্লিন

4
যখন আপনার স্ট্রিং একটি পরিবর্তনশীল হয়, $obj.($propName)তখনও কাজ করে। (প্রথম বন্ধনী প্রয়োজন হয় না, তবে এগুলি ছাড়া এটি আমার কাছে সত্যই অদ্ভুত লাগে ))
jpmc26

3
আপনি যদি $propNameউদাহরণস্বরূপ একটি বস্তুর মধ্যে সংরক্ষিত $Headers.PropertyNameতারপর প্রথম বন্ধনী প্রয়োজন হয় $obj.($Headers.PropertyName)
জোনাস লোমহোল্ড

41

@ আকুইনাসের উপর সম্প্রসারণ:

Get-something | select -ExpandProperty PropertyName

অথবা

Get-something | select -expand PropertyName

অথবা

Get-something | select -exp PropertyName

আমি তাদের জন্য এই পরামর্শগুলি দিয়েছি যেগুলি কিছু তথ্য পেতে কেবল একটি একক-লাইন কমান্ডের সন্ধান করছে এবং একটি বাস্তব-বিশ্বের উদাহরণ অন্তর্ভুক্ত করতে চেয়েছিল।

পাওয়ারশেলের মাধ্যমে অফিস 365 পরিচালনার ক্ষেত্রে, এখানে একটি উদাহরণ ছিল যা আমি "বুকইনপলিসি" তালিকায় যুক্ত করা সমস্ত ব্যবহারকারীর / গোষ্ঠীগুলিকে পাওয়ার জন্য ব্যবহার করেছি:

Get-CalendarProcessing conferenceroom@domain.com | Select -expand BookInPolicy

স্রেফ "বুকইনপলিসি সিলেক্ট করুন" ব্যবহার করে বেশ কয়েকটি সদস্য কেটে ফেলা হয়েছিল, সুতরাং এই তথ্যের জন্য আপনাকে ধন্যবাদ!


27

আপনি সেমিডলেট ব্যবহার করে এবং আপনার আগ্রহী সেই সম্পত্তি নাম উল্লেখ করে কোনও সম্পত্তি পেতে পারেন Select-ObjectNote দ্রষ্টব্য যে এটি কেবল সেই সম্পত্তির কাঁচা মূল্য ফেরায় না; পরিবর্তে আপনি এমন কিছু পান যা এখনও অবজেক্টের মতো আচরণ করে।

[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দিয়েছেন। এটি নির্দিষ্ট করা সম্পত্তিটির মান ফিরিয়ে কিছু মাথা ব্যথাকে অতিক্রম করে, তবে আপনি বিভিন্ন পরিস্থিতিতে বিভিন্ন পন্থা ব্যবহার করতে চাইবেন।

-ExpandProperty <String>

নির্বাচন করার জন্য একটি সম্পত্তি নির্দিষ্ট করে এবং নির্দেশ করে যে সেই সম্পত্তিটি প্রসারিত করার চেষ্টা করা উচিত

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

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


8

এটা চেষ্টা কর :

$obj = @{
    SomeProp = "Hello"
}

Write-Host "Property Value is $($obj."SomeProp")"

স্ট্যাকওভারফ্লোতে স্বাগতম, দয়া করে আপনার প্রশ্নটি সম্পাদনা করুন এবং ব্যাখ্যা করুন যে তাকে কেন এই চেষ্টা করা উচিত এবং কেন এটি ইতিমধ্যে বিদ্যমান উত্তরগুলিকে উন্নত করে।
টি 3 এইচ 40

আমি আপভোট বনাম ডাউনভোটের সাথে দ্বিধাবাদযুক্ত কারণ এই উত্তরটি কোনও বস্তু থেকে সম্পত্তির স্ট্রিং নাম থাকার উপর ভিত্তি করে কোনও সম্পত্তি নিরাপদে পাওয়ার সবচেয়ে সহজ উপায় আইএমও তবে কোনও ব্যাখ্যাও দেয় না।
ট্রয় প্যালাসিনো

; `` $ اعتراض = @ {প্রপ = "মান"; }; $ propName = "প্রোপ" '; লিখন-হোস্ট "$ প্রোপনেমের মান হ'ল $ ($ اعتراض।" $ প্রোপনেম ")" $ প্রোপনেম = "অস্তিত্বহীনপ্রপ" "; লিখন-হোস্ট "$ প্রোপনেমের মান $ ($জেজ।" $ প্রোপনেম ")" `` print মুদ্রণ করবে The value of Prop is Value এবং তারপরেThe value of NonexistentProp is
ট্রয় প্যালাসিনো

কি দারুন! মার্কডাউন ডকুমেন্টেশন মন্তব্যগুলির সাহায্যে লিঙ্কযুক্ত তবে সেগুলিতে প্রয়োগ হয় না। সত্যিই দুর্দান্ত এসও
দেবস

3

কোনও বস্তুর সম্পত্তির মূল্য পাওয়ার বিকল্প উপায় এখানে রয়েছে:

write-host $(get-something).SomeProp

0
$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

$ আরআর = @ ("জিন্ড", 12, "সিংহ") রাইটিং-হোস্ট $ আরআর [1] পঠন-হোস্ট $ আরআর + = "রেজা" রাইটিং-হোস্ট $ আরআর [3] পঠন-হোস্ট লিখন-হোস্ট $ আরআর [ r. arrleleth-1] পঠন-হোস্ট $ arr = $ arr -ne $ arr [1] লিখুন-হোস্ট r arr পঠন-হোস্ট foreach ($ আমি মধ্যে) আরে) {রাইট-হোস্ট $ i}
ধনো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.