मैं निम्नलिखित का उपयोग कर रहा हूं जो संपत्ति के मूल्य को लौटाता है, क्योंकि इसके माध्यम से एक्सेस किया जाएगा$thing.$prop
, अगर "संपत्ति" मौजूद होगी और यादृच्छिक अपवाद नहीं फेंकेगी। यदि संपत्ति "अस्तित्व में नहीं है" (या एक अशक्त मूल्य है) तो $null
वापस कर दिया जाता है: यह दृष्टिकोण / कार्य सख्त मोड के लिए उपयोगी है , क्योंकि, ठीक है, उन्हें पकड़ो।
मुझे यह दृष्टिकोण उपयोगी लगता है क्योंकि यह PS कस्टम ऑब्जेक्ट्स, सामान्य .NET ऑब्जेक्ट्स, PS हैशटेबल्स, और .NET संग्रह जैसे डिक्शनरी को "डक-टंकित समकक्ष" के रूप में माना जाता है। , जो मुझे लगता है कि यह PowerShell के लिए काफी अच्छा फिट है।
बेशक, यह "एक संपत्ति है" की सख्त परिभाषा को पूरा नहीं करता है .. जो कि यह प्रश्न स्पष्ट रूप से सीमित हो सकता है। यदि यहां मान ली गई "संपत्ति" की बड़ी परिभाषा को स्वीकार करते हुए, बूलियन वापस करने के लिए विधि को तुच्छ रूप से संशोधित किया जा सकता है।
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)
?