में $ null को कैसे संभालना है मेरे पास अक्सर मेरे पावरशेल कोड में निम्न स्थिति होती है: मेरे पास कोई फ़ंक्शन या प्रॉपर्टी है जो ऑब्जेक्ट्स का संग्रह देता है, या $null
। यदि आप परिणामों को पाइपलाइन में दबाते हैं, तो आप पाइपलाइन में एक तत्व भी संभालते हैं यदि $null
एकमात्र तत्व है।पाइपलाइन
उदाहरण:
$Project.Features | Foreach-Object { Write-Host "Feature name: $($_.Name)" }
अगर कोई सुविधाओं ($ Project.Features रिटर्न $ नल) कर रहे हैं, आप के साथ एक पंक्ति देखेंगे "सुविधा नाम:"।
if ($Project.Features -ne $null)
{
$Project.Features | Foreach-Object { Write-Host "Feature name: $($_.Name)" }
}
या
$Project.Features | Where-Object {$_ -ne $null) | Foreach-Object {
Write-Host "Feature name: $($_.Name)"
}
या
$Project.Features | Foreach-Object {
if ($_ -ne $null) {
Write-Host "Feature name: $($_.Name)" }
}
}
लेकिन असल में मैं इन तरीकों से किसी को पसंद नहीं है, लेकिन क्या करना:
मैं इस को हल करने के तीन तरीके को देखने के आप सबसे अच्छा दृष्टिकोण के रूप में देखते हैं?
संक्षिप्त आशुलिपि के साथ समस्या यह है कि यह कुछ भी है कि coerces को अस्वीकार कर देंगे है 'झूठी' में, जिसमें '0',' "" ',' @() ',' @ (0) ', जैसी चीजें शामिल हैं ... मैं शायद 'Skip-null' को वास्तव में केवल $ $ छोड़ने की अपेक्षा करता हूं null'। मुझे पता है कि इस प्रश्न के संदर्भ में परिणाम एक जैसा है, लेकिन एक फिल्टर के लिए जो कहीं और इस्तेमाल किया जा सकता है ... – Joey
@joey अच्छा बिंदु। – x0n
दुख की बात है '@() |? {$ False}' अभी भी खाली सूची लौटने की बजाय $ null लौटाता है – ekkis