Quantcast
Channel: TechNet Blogs
Viewing all articles
Browse latest Browse all 34890

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

$
0
0

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

 

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

output1

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

 

現象

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

 

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

 

Get-OUList.ps1

script

 

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

 

Output.bat

bat

 

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

output1

なお、この現象は PowerShell のスクリプト (Get-OUList.ps1) を実行したときには発生しません。

 

原因

出力結果の文字数は、PowerShell コンソールの画面バッファー サイズに依存します。

既定ではコンソールの画面バッファー サイズが 80 に設定されているため、コマンド プロンプトから呼び出されたときに 80 文字で切り詰められます。

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

default_value

 

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

width

 

対処策1

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

width2

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

※設定を反映させるためにOSの再起動を行います。

 

対処策2

PowerShell のスクリプトの中で画面バッファーのサイズの幅を定義します。

下記は画面バッファーのサイズの幅 200 に変更する例です。

 

$pshost = get-host

$pswindow = $pshost.ui.rawui

$newsize = $pswindow.buffersize

$newsize.width = 200

$pswindow.buffersize = $newsize

 

Get-OUList.ps1 (変更後)

script2

 

参考資料

Hey, Scripting Guy!Windows PowerShell コンソールの幅を広げる方法はありますか

https://gallery.technet.microsoft.com/scriptcenter/3771797e-9297-45fa-a36d-4263dc2335f3

 

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

output2

 

 


Viewing all articles
Browse latest Browse all 34890

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>