PowerShell のスクリプトの出力結果が 80 文字に切り詰められる
こんにちは、Windows プラット フォーム サポートの進藤です。
PowerShell のスクリプトをコマンド プロンプト等から実行したときに、スクリプトの出力結果が 79 文字 (改行を含めると 80 文字) に切り詰められる現象が発生することがあります。
今回は、この 80 文字で切れてしまう現象とその対処策について紹介します。
現象
値を取得してファイルに出力する PowerShell のスクリプトを作成します。
下記は AD からOUのリストを取得して、その結果をファイルに出力する PowerShell のスクリプトのサンプルです。
Get-OUList.ps1
続いて、上記で作成したPowerShell スクリプトを起動するためのバッチファイルを作成します。
Output.bat
上記で作成したOutput.bat を実行すると、下記のように出力結果 (list.txt) の内容が 79 文字 (改行を含めると 80 文字) で切れる現象が発生する場合があります。
原因
Select-Object の出力は PowerShell ホストへの出力を前提としているため、ターミナルのサイズに合わせて切りつめらるのが想定される動作になります。
既定ではターミナルの画面バッファー サイズが 80 に設定されているため、出力結果が 80 文字で切り詰められます。
PowerShell の画面バッファーサイズは、PowerShell を起動してウィンドウの左上の PowerShell アイコンをクリックし [既定値] - [レイアウト] タブにて定義されています。
下記のように画面バッファーのサイズの幅が 80 になっています。
対処策1
画面バッファーのサイズの幅を 80 よりも大きな値にすることで、切り詰められる文字数を増やすことができます。
※ [既定値] - [レイアウト] タブにて定義されている画面バッファーのサイズはユーザー毎のコンソールの既定値を示します。
対処策2
PowerShell のスクリプトの中で Select-Object -ExpandProperty を使用します。
Get-OUList.ps1 (変更後)
上記のいずれかの対処策を実施することで、下記のように期待した出力結果が得られるようになります。
- 変更履歴
2016 年 11月30日 初回投稿
2016 年 12 月 5 日 対処策2 を変更
2017 年 12 月 6 日 誤字修正