अगर मैं यह छोटा-सा कार्य लिखूं:
function Foo {
Get-Process | % { $_ }
}
और अगर मैं दौड़ता हूं
Foo
यह केवल गुणों का एक छोटा सा उप-भाग प्रदर्शित करता है:
PS C:\Users\Administrator> foo
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
86 10 1680 412 31 0,02 5916 alg
136 10 2772 2356 78 0,06 3684 atieclxx
123 7 1780 1040 33 0,03 668 atiesrxx
...
...
लेकिन अगर केवल 8 कॉलम दिखाए जाते हैं, तो भी बहुत सारे अन्य गुण हैं (जैसा foo | gmकि दिखा रहा है)।
इस फ़ंक्शन को केवल 8 गुण दिखाने के लिए क्या कारण है?
मैं वास्तव में एक समान फ़ंक्शन बनाने की कोशिश कर रहा हूं जो एक 3 पार्टी .Net लाइब्रेरी से जटिल वस्तुओं को वापस कर रहा है। पुस्तकालय वस्तुओं के 2 स्तरीय पदानुक्रम को समतल कर रहा है:
function Actual {
$someDotnetObject.ACollectionProperty.ASecondLevelCollection | % { $_ }
}
यह विधि ऑब्जेक्ट को सूची रूप (प्रति पंक्ति एक पंक्ति) में डंप कर रही है।
मैं वास्तविक वस्तु को उपलब्ध रखते हुए जो प्रदर्शित होता है, उसे कैसे नियंत्रित कर सकता हूं ?
मैंने यह कोशिश की है:
function Actual {
$someDotnetObject.ACollectionProperty.ASecondLevelCollection | % { $_ } | format-table Property1, Property2
}
यह कंसोल में अपेक्षित तालिका दिखाता है:
Property1 Property2
--------- ---------
ValA ValD
ValB ValE
ValC ValF
लेकिन मैंने अपनी वस्तुओं को खो दिया। Get-Memberपरिणाम शो पर चल रहा है :
TypeName: Microsoft.PowerShell.Commands.Internal.Format.FormatStartData
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
autosizeInfo Property Microsoft.PowerShell.Commands.Internal.Format.AutosizeInfo autosizeInfo {get;set;}
ClassId2e4f51ef21dd47e99d3c952918aff9cd Property System.String ClassId2e4f51ef21dd47e99d3c952918aff9cd {get;}
groupingEntry Property Microsoft.PowerShell.Commands.Internal.Format.GroupingEntry groupingEntry {get;set;}
pageFooterEntry Property Microsoft.PowerShell.Commands.Internal.Format.PageFooterEntry pageFooterEntry {get;set;}
pageHeaderEntry Property Microsoft.PowerShell.Commands.Internal.Format.PageHeaderEntry pageHeaderEntry {get;set;}
shapeInfo Property Microsoft.PowerShell.Commands.Internal.Format.ShapeInfo shapeInfo {get;set;}
TypeName: Microsoft.PowerShell.Commands.Internal.Format.GroupStartData
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
ClassId2e4f51ef21dd47e99d3c952918aff9cd Property System.String ClassId2e4f51ef21dd47e99d3c952918aff9cd {get;}
groupingEntry Property Microsoft.PowerShell.Commands.Internal.Format.GroupingEntry groupingEntry {get;set;}
shapeInfo Property Microsoft.PowerShell.Commands.Internal.Format.ShapeInfo shapeInfo {get;set;}
इसके बजाय दूसरे स्तर के बाल वस्तु सदस्यों को दिखाना। इस मामले में, मैं इस प्रकार के तर्क की प्रतीक्षा कर रहे कार्यों के परिणाम को पाइप नहीं कर सकता।
Powershell को ऐसे परिदृश्य को कैसे माना जाता है?