HOWTO · PowerShell

PowerShell を使用して出力をファイルにエクスポートする方法

この記事では、出力データをファイルにエクスポートする方法、既存のファイルにデータを追加する方法、および PowerShell を使用して出力を操作する方法について説明します。

このページの内容

複数のスクリプト言語には、データをファイルにエクスポートするための関数やメソッドがあります。古い MS-DOS 時代でも、レガシーリダイレクションオペレーター(>)を使うことで、便利にこれを実現できます。

この記事では、出力データをファイルにエクスポートする方法、既存のファイルにデータを追加する方法、および PowerShell を使用して出力を操作する方法について説明します。

PowerShell における Out-File コマンドの紹介

たとえば、コンピュータ上のすべての Windows サービスのリストを返すスクリプトがあるとします。Get-Service を実行すると、コンソール上に想定されるすべてのオブジェクトが表示されます。

しかし、その出力をテキストファイルに保存したいかもしれません。Out-File コマンドは、そのための素晴らしい方法です。

私たちは、パイプラインオペレーターを介してほぼすべてをパイプすることで Out-File を使用できます。以下に、スクリプトが Get-Service の出力を cmdlet に送信し、コンソールと同じ表示を含む Services.txt というテキストファイルを作成した様子を示します。

例コード:

Get-Service | Out-File -FilePath C:\PS\Services.txt
Get-Content C:\PS\Services.txt

出力:

Status   Name               DisplayName

Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
<SNIP>

PowerShell でファイルに追加するための -append パラメーターの使用

デフォルトでは、Out-File コマンドは -FilePath パラメーターを介して提供されたテキストファイルの内容を上書きします。ただし、-Append パラメーターを使用することで、この動作を上書きできます。

おそらく、コンソール出力をファイルに蓄積しており、上書きするのではなくファイルにテキストを追加したいと考えているでしょう。-Append パラメーターはあなたの良き友人です。

Out-File -Append パラメーターを使用しない場合、C:\PS\File.txt の内容は上書きされます。しかし、-Append パラメーターを追加すると、出力が最後に追加されます。

例コード:

'firststring' | Out-File -FilePath C:\PS\File.txt
Get-Content -Path C:\PS\File.txt

'secondstring' | Out-File -FilePath C:\PS\File.txt -Append
Get-Content C:\PS\File.txt

出力:

firststring
firststring
secondstring

PowerShell で出力データを変更する

デフォルトでは、この cmdlet はコンソールに表示されている内容を再現しようとしますが、操作する方法はいくつかあります。たとえば、cmdlet にはすべての改行文字を削除する -NoNewLine パラメーターがあります。

例コード:

Get-Service | Out-File -FilePath C:\PS\Services.txt -NoNewline
Get-Content C:\PS\Services.txt

出力:

Status   Name               DisplayName
------   ----               -----------
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application La

または、特定の文字数で各行のテキストを切り捨てることができる -Width パラメーターがあります。

例コード:

Get-Service | Out-File -FilePath C:\PS\Services.txt -Width 30
Get-Content C:\PS\Services.txt

出力:

Status   Name               DisplayName
------   -----              -----------
Stopped  AJRouter           Al