আমি নিম্নলিখিতটি ব্যবহার করছি যা সম্পত্তি মানটি প্রদান করে, যেমন এটির মাধ্যমে অ্যাক্সেস করা হত$thing.$prop
, যদি "সম্পত্তি" বিদ্যমান থাকে এবং এলোমেলো ব্যতিক্রম না ছুঁড়ে দেয়। সম্পত্তিটি যদি "অস্তিত্বহীন" থাকে (বা তার নাল মান থাকে) তবে $null
তা ফেরত দেওয়া হয়: এই পদ্ধতির মধ্যে / কঠোর মোডের জন্য দরকারী , কারণ, ভাল, গন ক্যাচ 'এম সব।
আমি এই পদ্ধতিকে দরকারী বলে মনে করি কারণ এটি পিএস কাস্টম অবজেক্টস, স্বাভাবিক .NET অবজেক্টস, পিএস হ্যাশটবেবলস এবং। NET সংগ্রহগুলি অভিধানের মতো "হাঁস-টাইপ সমতুল্য" হিসাবে বিবেচনা করে , যা আমি পাই পাওয়ারশেলের জন্য মোটামুটি উপযুক্ত।
অবশ্যই, এটি "একটি সম্পত্তি আছে" এর কঠোর সংজ্ঞা মেলে না .. যা এই প্রশ্নটি স্পষ্টভাবে সীমাবদ্ধ থাকতে পারে। যদি এখানে ধরে নেওয়া "সম্পত্তি" এর বৃহত্তর সংজ্ঞা গ্রহণ করে তবে একটি বুলিয়ান ফেরত দেওয়ার জন্য পদ্ধতিটি তুচ্ছভাবে সংশোধন করা যেতে পারে।
Function Get-PropOrNull {
param($thing, [string]$prop)
Try {
$thing.$prop
} Catch {
}
}
উদাহরণ:
Get-PropOrNull (Get-Date) "Date"
Get-PropOrNull (Get-Date) "flub"
Get-PropOrNull (@{x="HashTable"}) "x"
Get-PropOrNull ([PSCustomObject]@{x="Custom"}) "x"
$oldDict = New-Object "System.Collections.HashTable"
$oldDict["x"] = "OldDict"
Get-PropOrNull $d "x"
এবং, এই আচরণটি [সর্বদা] পছন্দসই নাও হতে পারে ... যেমন। x.Count
এবং এর মধ্যে পার্থক্য করা সম্ভব নয় x["Count"]
।
($object.property -ne $null)
?