Set-Contentは、私が欠かせないPowerShellのコアコマンドレットの一つです。PowerShellを使用してファイルに書き込む前にVBScriptを使用していたことを覚えています。どのようなオブジェクトを使用する必要があるのか、メソッド名は何だったか、いつも覚えようとしていました。それは苦痛でした!たとえメソッド名がCreateTextFile()であることを思い出しても、2番目の引数としてTrueを追加するのをいつも忘れてしまいます。
以下は、そのような醜態の例です。
このVBScriptとPowerShellを比較してみましょう:
Set-Content -Path 'C:\file.txt' -Value 'test string'
どちらが好みですか?私はPowerShellの方法を選びます!PowerShellの方法は、Set-Contentという単一のコマンドレットを使用します。このコマンドレットを使用すると、PowerShellをより簡単にファイルに書き込むことができます。このPowerShellコマンドレットは、1つの目的を持つ組み込みコマンドレットです。それはファイルに書き込むことです。
挙動を若干変更するためのいくつかのパラメータがあるかもしれませんが、ファイルに書き込むことに特化しています。ただし、似ているためAdd-Content
と混同しないでください。Set-Contentはファイル全体を上書きしますが、Add-Contentはファイルに追記します。最初に始めたときに何度も苦労しました!
ファイルの作成/上書き
Set-Contentコマンドレットは非常にシンプルです。以下は良い例です。この例では、Set-Contentが存在しない場合にファイルを作成することも、既存のファイルの内容をすべて置き換えることもできることを示しています。
ファイルへの出力
1つのファイルに出力することができるコマンドレットは Out-File
ですが、Set-Content
は同じタスクを少し異なる方法で実行することができます。
もしかしたら、1つのテキストファイルから特定のテキストを抽出し、別のファイルに行を出力したいかもしれません。Get-Content
を使用してファイルを読み取り、Set-Content
を使用してファイルに書き込むことで、これを実現することができます。たとえば、1つのサーバーとそのステータスが各行に記載されたテキストファイルがあるとします。各サーバーのステータスを読み取り、それをファイルに出力したいとします。ファイルを読み取るために Get-Content
を使用し、ファイルに書き込むために Set-Content
を使用することで、これが可能です。
Set-Content
は常に使用される基本的なコマンドレットの1つです。派手ではありませんが、いつでも動作し、PowerShell の便利なツールとして持っているべきものです。
詳細については、Set-Content の Microsoft ドキュメントを参照してください。
Source:
https://adamtheautomator.com/powershell-write-to-file/