Instantly share code, notes, and snippets.

Embed
What would you like to do?
PowerShellの既定のフォーマット設定に介入する方法
<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
<DefaultSettings>
<PropertyCountForTable>2</PropertyCountForTable>
<!--
存在は確認できたがいまいち謎なタグたち...
とりあえずデフォルト値を記載しておく
<ShowError>False</ShowError>
<DisplayError>False</DisplayError
<EnumerableExpansions>
<EnumerableExpansion>
<Expand>EnumOnly</Expand>
</EnumerableExpansion>
</EnumerableExpansions>
-->
</DefaultSettings>
</Configuration>

PowerShellの既定のフォーマット設定に介入する

PowerShellのデフォルト設定では表示プロパティが4を超えるとTableからListフォーマットに変化する。

実行例)

PS C:\> [PSCustomObject]@{Prop1=1;Prop2=2}

Prop1 Prop2
----- -----
    1     2


PS C:\> [PSCustomObject]@{Prop1=1;Prop2=2;Prop3=3}

Prop1 Prop2 Prop3
----- ----- -----
    1     2     3


PS C:\> [PSCustomObject]@{Prop1=1;Prop2=2;Prop3=3;Prop4=4}

Prop1 Prop2 Prop3 Prop4
----- ----- ----- -----
    1     2     3     4


PS C:\> [PSCustomObject]@{Prop1=1;Prop2=2;Prop3=3;Prop4=4;Prop5=5}


Prop1 : 1
Prop2 : 2
Prop3 : 3
Prop4 : 4
Prop5 : 5

独自のps1mxlを作成し、Update-FormatDataすることでこの設定に介入することができる。

# -PretendPathでも大丈夫ぽい
Update-FormatData -AppendPath .\sample.format.ps1xml

実行例)

PS C:\> Update-FormatData -AppendPath .\sample.format.ps1xml
PS C:\> [PSCustomObject]@{Prop1=1;Prop2=2}

Prop1 Prop2
----- -----
    1     2


PS C:\> [PSCustomObject]@{Prop1=1;Prop2=2;Prop3=3}


Prop1 : 1
Prop2 : 2
Prop3 : 3



PS C:\> [PSCustomObject]@{Prop1=1;Prop2=2;Prop3=3;Prop4=4}


Prop1 : 1
Prop2 : 2
Prop3 : 3
Prop4 : 4



PS C:\> [PSCustomObject]@{Prop1=1;Prop2=2;Prop3=3;Prop4=4;Prop5=5}


Prop1 : 1
Prop2 : 2
Prop3 : 3
Prop4 : 4
Prop5 : 5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment