【Windows】PowerShellで文字が見切れる時の対処方法

Windows Tips

PowerShell を使ってるとたまに出力結果の文字数が多くて…のように文字が見切れてしまう時があります。すべて表示させるためにはいくつか対処法があると思いますが、自身がよく使っているものをまとめてみました。

スポンサーリンク

PowerShell で文字が見切れる時の対処

PowerShell での文字切れ時の対処方法はいくつかあります。また、実行するコマンドによって対応しているものとしていないものがあるので、これを一発やっとけばいいというものはないようなので、実行するコマンドによって対応するものを利用する必要があるかと思います。

本記事で解説するのは以下の方法になります。

  • Fomat-Table で Wrap を指定する
  • FormatEnumerationLimit で表示アイテム数を変更する

それでは一つずつ説明していきます。

Format-Table で Wrap を指定する

1つ目は実行するコマンドにFormat-Table」と「-Wrap」を指定する方法になります。

Wrap パラメーターを使用することで、長い Format-Table データをその表示列内で強制的に折り返すことができます。

引用:Technet

以下は、出力結果が省略されてしまうコマンドのサンプルになります。

サンプル1

PS C:\Users\Administrator> Get-WindowsFeature -Name ADLDS

Display Name                        Name Install State
------------                       ---- ------------- 
[ ] Active Directory ライトウェイト ディレクトリ サ... ADLDS Available

PS C:\Users\Administrator>

このコマンドの場合、出力結果が「Active Directory ライトウェイト ディレクトリ サ…」と “…” で名前が省略されてしまいます。

 

この場合、以下のように実行するコマンドに対してパイプラインで| ft -Wrap」を加えて実行します。

コマンド例

 <コマンド> | ft -Wrap

コマンド実行例

PS C:\Users\Administrator> Get-WindowsFeature -Name ADLDS | ft -AutoSize-Wrap

Display Name                        Name  Install State
------------                       ----  -------------
[ ] Active Directory ライトウェイト ディレクトリ サービ ADLDS Available
ス
PS C:\Users\Administrator>

文字の見切れはなくなりますが、折り返されてしまいます。

Wrap を折り返さずに表示する (AutoSize の指定)

このような場合は、Format-Table へ「-AutoSize」も加えることにより折り返させずに表示させることもできます。

コマンド例

 <コマンド> | ft -AutoSize -Wrap

コマンド実行例

PS C:\Users\Administrator> Get-WindowsFeature -Name ADLDS | ft -AutoSize-Wrap

Display Name                         Name  Install State
------------                         ----  -------------
[ ] Active Directory ライトウェイト ディレクトリ サービス ADLDS Available

PS C:\Users\Administrator>

このように文字の見切れがなくなり、全て表示されるようになります。

AutoSizeを使用する場合は、多くのメモリを消費するようなので、大量の出力を行う場合はシステム負荷に気をつけましょう。

FormatEnumerationLimit で表示数を変更する

もうひとつは、「FormatEnumerationLimit」の設定になります。

これは出力できるアイテム数を定義している設定で、Exchange や Lync などでプロパティなどの出力コマンド利用時に文字が切れてしまときには、これで解決することができました。

デフォルトの設定では “4” となっています。設定の確認方法は以下となります。

コマンド実行例

PS C:\Users\Administrator> $FormatEnumerationLimit
4
PS C:\Users\Administrator>

以下は、出力結果が省略されてしまうコマンドのサンプルになります。

サンプル2

PS C:\Users\Administrator> Get-Service | Group-Object

Count Name                     Group
----- ----                     -----
 213 ADWS                     {ADWS, AJRouter, ALG, AppIDSvc...}

PS C:\Users\Administrator>

出力結果が「{ADWS, AJRouter, ALG, AppIDSvc…}」と “…” で他のアイテムが省略されてしまっています。

※このコマンドに対して「| Format-Table -AutoSize -Wrap」を使っても改善しません。

 

その場合は、$FormatEnumerationLimit = -1」を設定して、表示アイテム数の変更を行います。
※この設定は、PowerShell を閉じたらリセットされます。

コマンド例

$FormatEnumerationLimit = -1

コマンド実行例

PS C:\Users\Administrator> $FormatEnumerationLimit = -1
PS C:\Users\Administrator>

「$FormatEnumerationLimit = -1」へ変更が終わったら再度コマンドを実行します。

サンプル2

PS C:\Users\Administrator> Get-Service | Group-Object

Count Name                     Group
----- ----                     -----
 213 ADWS                     {ADWS, AJRouter, ALG, AppIDSvc, Appinfo, AppMgmt, AppReadiness, AppVClient, AppXSvc, AudioEndpointBuilder, Audiosrv

PS C:\Users\Administrator>

このように表示されるアイテム数が変更され、出力アイテムが省略されなくました。

タイトルとURLをコピーしました