PowerShellで表示が切れるのを防ぐ
PowerShellで表示が切れるのを防ぐ
PowerShellでコンソール上に値を表示させたり、テキストとして出力させたりするときに、 一定の長さで表示が切れて「...」となってしまうのを防ぎたい。
長く不便に感じていたにも関わらず全然情報を見つけられなかったのですが、 別件の調べものをしていた際に偶然発見しました。
こちらのブログに情報がありました。(ありがとうございます) http://cncn-us.hatenablog.com/entry/2016/10/18/175657
たとえば
PS > Get-EventLog Application -Newest 1 Index Time EntryType Source InstanceID Message ----- ---- --------- ------ ---------- ------- 4981 12 13 22:30 Warning EventSystem 2147488002 ソース 'EventSystem' のイベント ID '-2147479294' の説明が...
となり、「Message」が全て表示されません。 これはOut-Fileでテキストに表示させても同じで(改善される場合もある)、 「Export-Csv」を使ってcsvファイルに出力することで、何とか回避していました。
「...」にせずに全て表示させるにはこのようにします。
PS > Get-EventLog Application -Newest 1 | Format-Table -AutoSize -Wrap Index Time EntryType Source InstanceID Message ----- ---- --------- ------ ---------- ------- 4981 12 13 22:30 Warning EventSystem 2147488002 ソース 'EventSystem' のイベント ID '-2147479294' の説明が見つかりません。必要 なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コ ンピューターに存在しない可能性があります。または、これらのデータへのアクセス許 可がユーザーに与えられていない可能性があります。次の情報はイベントの一部です:' 80010105', 'ConnectionMade', '{D5978620-5B9F-11D1-8DD2-00AA004ABD5E}', '', '', 'ConnectionMade', ''
上記参考にさせていただいたブログでは「-Wrap」オプションを使わず、「| Out-String -Width 4096」としていました。 もちろんそれでもOKです。「-Wrap」オプションは、長い場合にその項目の欄に改行して表示してくれるオプションです。
PS > Get-EventLog Application -Newest 1 | Format-Table -AutoSize | Out-String -Width 4096 Index Time EntryType Source InstanceID Message ----- ---- --------- ------ ---------- ------- 4981 12 13 22:30 Warning EventSystem 2147488002 ソース 'EventSystem' のイベント ID '-2147479294' の説明が見つかりません。必要なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コンピューターに存在しない可能性があります。または、これらのデータへのアクセス許可がユーザーに与えられていない可能性があります。次の情報はイベントの一部です:'80010105', 'ConnectionMade', '{D5978620-5B9F-11D1-8DD2-00AA004ABD5E}', '', '', 'ConnectionMade', ''