こんにちは、Windows プラット フォーム サポートの進藤です。
PowerShell のスクリプトをコマンド プロンプトから実行したときに、スクリプトの出力結果が 79 文字 (改行を含めると 80 文字) に切り詰められる現象が発生することがあります。
今回は、この 80 文字で切れてしまう現象とその対処策について紹介します。
現象
値を取得してファイルに出力する PowerShell のスクリプトを作成します。
下記は AD からOUのリストを取得してCSVファイルに出力する PowerShell のスクリプトのサンプルです。
Get-OUList.ps1
続いて、上記で作成したPowerShell スクリプトを起動するためのバッチファイルを作成します。
Output.bat
上記で作成したOutput.bat を実行すると、下記のように出力結果 (list.txt) の内容が 79 文字 (改行を含めると 80 文字) で切れる現象が発生します。
なお、この現象は PowerShell のスクリプト (Get-OUList.ps1) を実行したときには発生しません。
原因
出力結果の文字数は、PowerShell コンソールの画面バッファー サイズに依存します。
既定ではコンソールの画面バッファー サイズが 80 に設定されているため、コマンド プロンプトから呼び出されたときに 80 文字で切り詰められます。
PowerShell の画面バッファーサイズは、PowerShell を起動してウィンドウの左上の PowerShell アイコンをクリックし [既定値] – [レイアウト] タブにて定義されています。
下記のように画面バッファーのサイズの幅が 80 になっています。
対処策1
画面バッファーのサイズの幅を 80 よりも大きな値にすることで、切り詰められる文字数を増やすことができます。
※ [既定値] – [レイアウト] タブにて定義されている画面バッファーのサイズはユーザー毎のコンソールの既定値を示します。
※設定を反映させるためにOSの再起動を行います。
対処策2
PowerShell のスクリプトの中で画面バッファーのサイズの幅を定義します。
下記は画面バッファーのサイズの幅を 200 に変更する例です。
$pshost = get-host
$pswindow = $pshost.ui.rawui
$newsize = $pswindow.buffersize
$newsize.width = 200
$pswindow.buffersize = $newsize
Get-OUList.ps1 (変更後)
– 参考資料
Hey, Scripting Guy!Windows PowerShell コンソールの幅を広げる方法はありますか
https://gallery.technet.microsoft.com/scriptcenter/3771797e-9297-45fa-a36d-4263dc2335f3
上記のいずれかの対処策を実施することで、下記のように期待した出力結果が得られるようになります。