none
PowerShellのOUT-FILE RRS feed

  • 質問

  • 下記コマンドを実行すると文字が切り捨てられます。
    ■コマンド
    $p="C:\TEMP\"
    $f1=$(HOSTNAME)+"_"+$(Get-Date).ToString("yyyyMMdd_hhmmss")
    $f2="_hogehoge.txt"
    Get-Service | OUT-FILE $p$f1$f2
    ■出力例
    Status   Name               DisplayName                           
    ------   ----               -----------                           
    Stopped  clr_optimizatio... Microsoft .NET Framework NGEN v2.0....
    Stopped  clr_optimizatio... Microsoft .NET Framework NGEN v2.0....
    Stopped  clr_optimizatio... Microsoft .NET Framework NGEN v4.0....
    Stopped  clr_optimizatio... Microsoft .NET Framework NGEN v4.0....

    テーブル形式かつテキスト出力した場合、文字を全て表示させる手段はございますでしょうか。
    ちなみに下記コマンドは試しましたが、ダメでした。
    ■試してみた
    Get-Service | OUT-FILE $p$f1$f2 -width 1000
    Get-Service | fw | OUT-FILE $p$f1$f2
      ⇒プロパティ名(Status,Name,DisplayName)が出力されない
    レイアウトの幅の拡張
    2015年3月7日 11:29

すべての返信

  • Get-Service | Format-Table -Wrap | Out-File service.txt

    のようにすると、表のセルのうち、はみ出した部分が改行表示されます。

    どうしても1行で収めたい場合は、小細工ですが以下のような方法でうまくいくかと思います。

    $original = $host.UI.RawUI.BufferSize
    $host.UI.RawUI.BufferSize = New-Object System.Management.Automation.Host.Size 1000,3000
    Get-Service | Format-Table -AutoSize | Out-File service.txt
    $host.UI.RawUI.BufferSize = $original

    Format-Tableに-AutoSizeパラメータを付与すると、セルの最大の文字数に合わせて表の幅が広がるのですが、コンソール画面のサイズ(正確にはバッファサイズ)以上には広がらず、はみ出した部分は切り捨てられてしまいます。

    そこで、画面バッファサイズを一時的に変更して、十分大きな幅(ここでは1000)にしています。

    後始末として画面バッファサイズを元に戻しています。

    ただ、本当に小細工感が否めないので、あまりお勧めはしませんです。


    2015年3月7日 12:23
    モデレータ