2013-07-28 9 views

उत्तर

30

Select-ObjectExcludeProperty वस्तुओं के संग्रह से संपत्ति को हटाने के लिए अच्छा है।

इस विधि एक वस्तु से एक प्रॉपर्टी को हटाने और अधिक प्रभावी हो सकता है के लिए:

# new object with properties Test and Foo 
$obj = New-Object -TypeName PSObject -Property @{ Test = 1; Foo = 2 } 

# remove a property from PSObject.Properties 
$obj.PSObject.Properties.Remove('Foo') 
+0

बहुत अच्छा, कुछ नया सीखा। –

+0

आह! मैं 'निकालें' विधि के साथ चारों ओर टूलिंग कर रहा था और इसे काम नहीं कर सका, लेकिन यह समझ में आता है कि आपको इसे विशेष रूप से कक्षा में गुणों के साथ लागू करना होगा। आप दोनों को धन्यवाद। – Tohuw

+2

मैं कल रात को निकालने के साथ गड़बड़ कर रहा था और जो मैं कह सकता हूं उससे हमेशा काम नहीं करता है। 'Get-Process -id $ pid | आज़माएं % {$ _। psobject.properties.remove ('__ नामनाम'); $ _} | % __NounName'। यह आश्चर्य की बात नहीं है कि यह एक psobject या pscustomobject के साथ भी काम करेगा। ओटीओएच मैं इसे डेट-डेट पर डिस्प्लेहिंट के साथ प्राप्त करने में सक्षम था। –

11

मुझे नहीं लगता कि आप किसी मौजूदा ऑब्जेक्ट से निकाल सकते हैं लेकिन आप फ़िल्टर किए गए एक को बना सकते हैं।

$obj = New-Object -TypeName PsObject -Property @{ Test = 1} 
$obj | Add-Member -MemberType NoteProperty -Name Foo -Value Bar 
$new_obj = $obj | Select-Object -Property Test 

या

$obj | Select-Object -Property * -ExcludeProperty Foo 

यह प्रभावी रूप से एक ही परिणाम प्राप्त करेंगे।

+8

हिस्सा '-Property *' वास्तव में जरूरी है या यह काम नहीं करता। टिप एंडी के लिए धन्यवाद! – DarkLite1

0

वस्तु या संग्रह आप से निकालना चाहते हैं के प्रकार पर निर्भर कर सकते हैं। आम तौर पर आपके जैसे ऑब्जेक्ट्स (एरे) जैसे 'import-csv' से मिल सकते हैं जिन्हें आप इसे आसानी से कर सकते हैं।

$MyDataCollection = Import-CSV c:\datafiles\ADComputersData.csv 
$MyDataCollection 
Windows Server : lax2012sql01 
IP    : 10.101.77.69 
Site   : LAX 
OS    : 2012 R2 
Notes   : V 

Windows Server : sfo2016iis01 
IP    : 10.102.203.99 
Site   : SFO 
OS    : 2012 R2 
Notes   : X 

इनमें से प्रत्येक से एक संपत्ति को दूर करने के:

$MyDataCollection | ForEach { $_.PSObject.Properties.Remove('Notes') } 

Windows Server : lax2012sql01 
IP    : 10.101.77.69 
Site   : LAX 
OS    : 2012 R2 

Windows Server : sfo2016iis01 
IP    : 10.102.203.99 
Site   : SFO 
OS    : 2012 R2 
संबंधित मुद्दे