PowerShell セット コンテンツ コマンドレット
-
PowerShell の
Set-Content
コマンドレット -
Set-Content
コマンドレットを使用してテキスト コンテンツを 1つのファイルに書き込む -
Set-Content
コマンドレットを使用して複数のファイルのテキスト コンテンツを置換する -
Set-Content
を使用して、PIPE を介してテキスト コンテンツを渡す
場合によっては、同じテキスト コンテンツを複数のテキスト ファイルに書き込む必要がある場合があります。 PowerShell には、コマンド ラインからテキスト コンテンツを書き込むための便利なコマンドレットが用意されています。
この記事では、Set-Content
コマンドレットに焦点を当てます。
PowerShell の Set-Content
コマンドレット
Set-Content
コマンドレットは、新しいテキスト コンテンツを書き込むか、ファイル内の既存のテキストを置き換えます。 これは、Linux の >
演算子に似ています。
Set-Content
コマンドレットは、指定したファイルにテキストを追加する Add-Content
文字列処理コマンドレットとは異なります。 sc
は、Set-Content
コマンドのエイリアスとして使用できます。
構文:
Set-Content
[-Path_to_file] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-NoNewline]
[-Encoding <Encoding>]
[-AsByteStream]
[-Stream <string>]
[<CommonParameters>]
このコマンドは非常に多くの引数を取ります。いくつかの引数の目的については、次のセクションで説明します。
パラメータ | 説明 |
---|---|
-Path_to_file |
既存のテキスト ファイル パスを指定するか、指定されたパスに新しいファイル パスを作成できます。 |
-Value |
このパラメーターは、書き込むテキスト コンテンツを渡すために使用されます。 |
-Force |
-Force 引数は、読み取り専用ファイルの内容を置き換えます。 |
-Encoding |
ターゲット ファイルのテキスト エンコーディングは、デフォルトで utf8NoBOM に設定されています。 |
-Exclude |
この操作で除外する必要がある項目は、文字列配列として指定されます。 |
-Include |
これは、-Exclude 引数の反対です。 この引数は、Set-Content 操作に含める必要がある項目の配列を指定します。 |
-PassThru |
PassThru 引数を指定すると、コマンドはテキスト ファイルに追加されたテキスト コンテンツを出力します。 |
通常、-Value
パラメータは、通常、ファイルに書き込まれるテキスト コンテンツを指定するために使用されます。 さらに、別のオブジェクトからテキスト コンテンツをパイプすることもできます。
非文字列オブジェクトを Set-Content
コマンドに渡すと、最初に非文字列オブジェクトが文字列に変換され、ファイルに書き込まれます。
Set-Content
コマンドレットを使用してテキスト コンテンツを 1つのファイルに書き込む
現在存在しない sometext.txt
というファイルにテキスト コンテンツを書き込んでみましょう。 そのため、Set-Content コマンドは最初にこのファイルを作成し、-Value
引数で渡されたコンテンツを書き込みます。
指図:
Set-Content -Path D:\codes\sometext.txt -Value "This should create a new file called sometext.txt and write this text to it..."
出力:
Set-Content
コマンドレットを使用して複数のファイルのテキスト コンテンツを置換する
file1.txt、file2.txt、および file3.txt
の 3つのファイルがあるとします。 これら 3つのファイルの内容を次のテキストに置き換えます。
Hello, i would be appeared in all the three files!
この場合、Set-Content
コマンドはワイルドカード文字を使用して、指定された 3つのファイルを照合します。
指図:
Set-Content -Path D:\codes\file*.txt -Value "Hello, i would be appeared in all the three files!"
3つのファイルは、file* txt
で指定されたパターンに一致します。これにより、コマンドは、file
句で始まるすべてのファイルに一致するようになります。
出力:
Set-Content
を使用して、PIPE を介してテキスト コンテンツを渡す
-Value
引数を常に指定する必要はありません。 代わりに、次のようにテキスト オブジェクトを Set-Content
に PIPE できます。
指図:
(Get-Content D:\codes\file1.txt).replace('all the three files!', 'file4.txt') | Set-Content D:\codes\file4.txt
Get-Content
コマンドレットは、file1.txt
ファイルからテキスト コンテンツを読み取ります。 次に、replace
コマンドを使用して 3つのファイルすべてを置き換えます!
file4.txt
のテキスト。
最後に、作成されたテキストが file4.txt
ファイルに書き込まれます。
出力:
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.