PowerShell のスクリプトの出力結果が 80 文字に切り詰められる

こんにちは、Windows プラット フォーム サポートの進藤です。

 

PowerShell のスクリプトをコマンド プロンプト等から実行したときに、スクリプトの出力結果が 79 文字 (改行を含めると 80 文字) に切り詰められる現象が発生することがあります。

今回は、この 80 文字で切れてしまう現象とその対処策について紹介します。

 

output1

 

現象

値を取得してファイルに出力する PowerShell のスクリプトを作成します。

 

下記は AD からOUのリストを取得して、その結果をファイルに出力する PowerShell のスクリプトのサンプルです。

 

Get-OUList.ps1

script_c

 

続いて、上記で作成したPowerShell スクリプトを起動するためのバッチファイルを作成します。

 

Output.bat

bat

 

上記で作成したOutput.bat を実行すると、下記のように出力結果 (list.txt) の内容が 79 文字 (改行を含めると 80 文字) で切れる現象が発生する場合があります。

output1

 

原因

Select-Object の出力は PowerShell ホストへの出力を前提としているため、ターミナルのサイズに合わせて切りつめらるのが想定される動作になります。

既定ではターミナルの画面バッファー サイズが 80 に設定されているため、出力結果が 80 文字で切り詰められます。

PowerShell の画面バッファーサイズは、PowerShell を起動してウィンドウの左上の PowerShell アイコンをクリックし [既定値] - [レイアウト] タブにて定義されています。

default_value

 

下記のように画面バッファーのサイズの幅が 80 になっています。

width

 

対処策1

画面バッファーのサイズの幅を 80 よりも大きな値にすることで、切り詰められる文字数を増やすことができます。

width2

※ [既定値] - [レイアウト] タブにて定義されている画面バッファーのサイズはユーザー毎のコンソールの既定値を示します。

 

対処策2

PowerShell のスクリプトの中で Select-Object -ExpandProperty を使用します。

 

Get-OUList.ps1 (変更後)

script_d

 

上記のいずれかの対処策を実施することで、下記のように期待した出力結果が得られるようになります。

output2

 

- 変更履歴

2016 年 11月30日  初回投稿

2016 年 12 月 5 日 対処策2 を変更

2017 年 12 月 6 日 誤字修正