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
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn