一般的な注意事項。
$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
コマンドは、Forceパラメーターを使用して、オブジェクトの組み込みメンバーとコンパイラー生成メンバーを表示に追加します。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
のコレクションに(それぞれのNB TypeName
、いない各オブジェクトの- Nのコレクションは、すべて同じでオブジェクトTypeName
の意志だけで、そのために1つの表を印刷するTypeName
各オブジェクトのではなく、Nテーブル)......そのまま配管するだけ。
-Force
パラメータを渡す必要がありました。たとえば、Write-Host ($obj | Format-List -Force | Out-String)