कुछ सामान्य नोट्स।
$obj | Select-Object
⊆ $obj | Select-Object -Property *
उत्तरार्द्ध सभी गैर-आंतरिक, गैर-संकलक-उत्पन्न गुण दिखाएगा । पूर्व सभी संपत्ति प्रकारों को नहीं दिखाता (हमेशा) मेरे परीक्षणों में, यह लगातार प्रदर्शित होता है, हालांकि - यहाँ कोई गारंटी नहीं है)।CodeProperty
MemberType
गेट-मेंबर के लिए जागरूक होने के लिए कुछ स्विच
Get-Member
करता नहीं डिफ़ॉल्ट रूप से स्थिर सदस्यों मिलता है। आप गैर-स्थैतिक सदस्यों के साथ उन्हें (सीधे) प्राप्त नहीं कर सकते । यही है, स्विच के उपयोग से केवल स्थिर सदस्यों को लौटाया जाता है:
PS Y:\Power> $obj | Get-Member -Static
TypeName: System.IsFire.TurnUpProtocol
Name MemberType Definition
---- ---------- ----------
Equals Method static bool Equals(System.Object objA, System.Object objB)
...
का प्रयोग करें -Force
।
Get-Member
आदेश का उपयोग करता फोर्स प्रदर्शन के लिए आंतरिक सदस्यों और वस्तुओं के संकलक उत्पन्न सदस्य जोड़ने के लिए पैरामीटर। Get-Member
इन सदस्यों को मिल जाता है, लेकिन यह उन्हें डिफ़ॉल्ट रूप से छुपाता है।
PS Y:\Power> $obj | Get-Member -Static
TypeName: System.IsFire.TurnUpProtocol
Name MemberType Definition
---- ---------- ----------
...
pstypenames CodeProperty System.Collections.ObjectModel.Collection...
psadapted MemberSet psadapted {AccessRightType, AccessRuleType,...
...
ConvertTo-Json
गहराई और पठनीय "क्रमांकन" के लिए उपयोग करें
मैं JSON ( इसके बजाय उपयोग ) का उपयोग करके वस्तुओं को बचाने की सिफारिश करना आवश्यक नहीं है Export-Clixml
। हालाँकि, आप इससे अधिक या कम पठनीय आउटपुट प्राप्त कर सकते हैं ConvertTo-Json
, जो आपको गहराई निर्दिष्ट करने की भी अनुमति देता है।
ध्यान दें कि Depth
तात्पर्य निर्दिष्ट नहीं है-Depth 2
PS Y:\Power> ConvertTo-Json $obj -Depth 1
{
"AllowSystemOverload": true,
"AllowLifeToGetInTheWay": false,
"CantAnyMore": true,
"LastResortOnly": true,
...
और अगर आप इसे पढ़ने की योजना नहीं बना रहे हैं तो आप इसे कर सकते -Compress
हैं (यानी स्ट्रिप व्हाट्सएप)
PS Y:\Power> ConvertTo-Json $obj -Depth 420 -Compress
-InputObject
यदि आप कर सकते हैं और उपयोग करें (तैयार हैं)
PowerShell का उपयोग करते समय 99.9%: या तो प्रदर्शन कोई फर्क नहीं पड़ेगा, या आप प्रदर्शन के बारे में परवाह नहीं करते हैं। हालांकि , यह ध्यान दिया जाना चाहिए कि पाइप से बचने के लिए जब आपको इसकी आवश्यकता नहीं होती है तो कुछ ओवरहेड को बचा सकता है और कुछ गति जोड़ सकता है (पाइपिंग, सामान्य रूप से, सुपर-कुशल नहीं है)।
यानी, यदि आप सभी के पास $obj
मुद्रण के लिए एक ही काम है (और कभी-कभी टाइप करने के लिए मेरी तरह आलसी नहीं हैं -InputObject
):
# select is aliased (hardcoded) to Select-Object
PS Y:\Power> select -Property * -InputObject $obj
# gm is aliased (hardcoded) to Get-Member
PS Y:\Power> gm -Force -InputObject $obj
इसके लिए चेतावनी Get-Member -InputObject
:
यदि $ obj एक संग्रह है (उदाहरण के लिए System.Object[]
), तो आप अंत में संग्रह वस्तु के बारे में जानकारी प्राप्त कर रहे हैं:
PS Y:\Power> gm -InputObject $obj,$obj2
TypeName: System.Object[]
Name MemberType Definition
---- ---------- ----------
Count AliasProperty Count = Length
...
यदि आप संग्रह में Get-Member
प्रत्येक के लिए चाहते हैं TypeName
(प्रत्येक के लिए एनबी TypeName
, प्रत्येक वस्तु के लिए नहीं - सभी के साथ एन वस्तुओं का एक संग्रह TypeName
केवल उसके लिए 1 तालिका प्रिंट करेगा TypeName
, प्रत्येक वस्तु के लिए एन टेबल नहीं) ...... बस इसे सीधे में पाइपिंग के साथ रखें।
-Force
इसे काम करने के लिए पैरामीटर पास करना था , जैसेWrite-Host ($obj | Format-List -Force | Out-String)