কিছু সাধারণ নোট।
$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
আপনি যদি করতে পারেন তবে ব্যবহার করুন (এবং ইচ্ছুক)
পাওয়ারশেল ব্যবহার করার সময় 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
:
যদি $জেজ একটি সংগ্রহ হয় (উদাঃ System.Object[]
), আপনি সংগ্রহ অবজেক্টের নিজেই তথ্য পেতে শেষ করবেন:
PS Y:\Power> gm -InputObject $obj,$obj2
TypeName: System.Object[]
Name MemberType Definition
---- ---------- ----------
Count AliasProperty Count = Length
...
আপনি যদি সংগ্রহে Get-Member
প্রতিটি জন্য চান TypeName
(প্রতিটি জন্য NB TypeName
, না প্রতিটি বস্তুর জন্য - সমস্ত একই সাথে এন বস্তুর একটি সংগ্রহ TypeName
কেবল তার জন্য 1 টেবিল প্রিন্ট করবে TypeName
, প্রতিটি বস্তুর জন্য এন টেবিল নয়) ...... কেবল এটি সরাসরি পাইপ দিয়ে আটকে দিন।
-Force
এটিকে কাজ করার জন্য আমাকে প্যারামিটারটি পাস করতে হয়েছিল, যেমনWrite-Host ($obj | Format-List -Force | Out-String)