【PowerShell】ファイル出力(リダイレクトなど)

※この記事は「2021年4月23日」に更新しました。

今回は、PowerShell(パワーシェル)のファイル出力(リダイレクトなど)について。

コマンドプロンプトだと、リダイレクト処理でテキストファイルに出力できました。

もちろん、PowerShell でも使えるので解説していきます。

環境は、Windows 10(64bit)、PowerShell 5.11 です。

ファイル出力(リダイレクトなど)

ファイル出力について、紹介していきます。

PowerShell(パワーシェル)は、主に下記のコマンドレット、あるいはリダイレクト処理でファイル出力を行います。

  • リダイレクト演算子
  • Out-File
  • Set-Content / Add-Content

それぞれ紹介していきます。

リダイレクト演算子

リダイレクト演算子(>)を使って、ファイル出力する方法です。

例えば、自分のパソコンの IPアドレス情報をテキストファイルとして記録するには以下のようにします。

ipconfig > test.txt

こうすると、テキストファイルに ipconfig の内容が記録されます(上書き)。

例えば、この直後に日付を入れる場合は以下のようにします。

Get-Date >> test.txt

test.txt の中身を見てみると、先程の ipconfig の結果の後に日付が追記されています。

つまり、>> を使えば、ファイルに追記することができるというわけです。

実行結果は以下の通りです。

ファイル出力(リダイレクト)

Get-Content でテキストファイルの最後から20行だけ表示させました(全部表示させると長いので)。



Out-File

Out-File も同様にファイル出力をすることができます。

リダイレクト演算子とほぼ同じことができますが、-Encoding というパラメータを使えば、ファイル出力エンコードを指定することができます。

PowerShell 6.0 以降の文字エンコーディングについて
PowerShell 6.0 以降は、クロスプラットフォーム化しているので、デフォルトの文字コードも変わっています。

例えば、カレントディレクトリにあるフォルダ(およびファイル)の一覧をテキストとして保存するには以下のようにします。

dir | Out-File test.txt

こうすると、先程の内容は上書きされているはずです。

実行結果は以下の通りです。

ファイル出力(リダイレクト)

ちなみに excel と word というフォルダは以前から作成したものなのであまり気にしないで下さい。

Set-Content / Add-Content

Out-File と似たコマンドレットで Set-Content(上書き)と Add-Content(追記)というものがあります。

このコマンドレットは、読み込みにロックがかかるのが特徴です。

Out-File は、書き込んでいる最中でも読み込み可能です。

最後に

いかがでしょうか。

今回は、ファイル出力(リダイレクトなど)について、紹介しました。

ネットワークで通信状況などを記録するときにも使えるので、今回の内容は覚えておくと便利です。

必要な部分だけ抽出することもできるので、活用していきましょう。