2015-02-05 13 views
5

त्वरित प्रश्नतुलना-वस्तु बाईं या दाईं ओर केवल

वहाँ एक बेहतर (अर्थात अधिक कुशल/अधिक संक्षिप्त) तरीका यह है है?

compare-object $a $b | ?{$_.SideIndicator -eq '<='} 

विस्तार

Compare-Object paramenters -excludeDifferent और -includeEqual आप में संशोधन करने का जो परिणाम आपको मिल अनुमति देने के लिए देता है।

  • का उपयोग कर दोनों आप एक आंतरिक में शामिल होने
  • सिर्फ -includeEqual का उपयोग कर आप एक पूर्ण बाहरी देता है देता में शामिल होने
  • का उपयोग कर बस -excludeDifferent व्यर्थ है; डिफ़ॉल्ट रूप से बराबर वस्तुओं को बाहर रखा गया है, इसलिए अब यह सबकुछ बाहर कर देगा।

-includeLeft, -excludeLeft या इसी तरह के लिए कोई विकल्प नहीं हैं।

वर्तमान में बाएं बाहरी में शामिल होने के लिए जहां दाहिने तरफ शून्य है (यानी संदर्भ वस्तु में आइटम जो अंतर वस्तु में नहीं हैं) मुझे ऊपर दिए गए कोड के अनुसार मैन्युअल रूप से परिणामों को फ़िल्टर करने की आवश्यकता है।

क्या मुझे कुछ याद आया/क्या कोई बेहतर तरीका है?

http://ss64.com/ps/compare-object.html

+0

प्रस्तुत सुविधा का अनुरोध: https://connect.microsoft.com/PowerShell/feedbackdetail/view/1116603/feature-suggestion-compare-object-new -परमीटर-संदर्भ-भिन्नता – JohnLBevan

उत्तर

2

वहाँ कि cmdlet के लिए उस तरह कोई विकल्प नहीं है, फिर भी आप एक फिल्टर (उदाहरण के लिए अपने प्रोफ़ाइल में) बनाने और उसके बाद परिणाम फिल्टर करने के लिए इसका इस्तेमाल कर सकते: कुछ

filter leftside{ 
param(
     [Parameter(Position=0, Mandatory=$true,ValueFromPipeline = $true)] 
     [ValidateNotNullOrEmpty()] 
     [PSCustomObject] 
     $obj 
    ) 

    $obj|?{$_.sideindicator -eq '<='} 

} 
की तरह

उपयोग

compare-object $a $b | leftside 
+0

मुझे अभी तक 'फ़िल्टर की खोज नहीं हुई है, इसलिए उस प्रो टिप के लिए अतिरिक्त धन्यवाद! – JohnLBevan

+1

फ़िल्टर को पीएस में शुरू किया गया था लेकिन मुझे लगता है कि इसे 'फ़ंक्शन' के साथ पूरी तरह से बदला जा सकता है –

संबंधित मुद्दे