Set-Content
項目に内容を書き込むか、新しい内容で置き換えます。
構文
Set-Content [-LiteralPath] <string[]> [-Value] <Object[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]
Set-Content [-Path] <string[]> [-Value] <Object[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]
説明
Set-Content コマンドレットは文字列処理コマンドレットであり、ファイルなど指定した項目に内容を書き込むか置き換えます。Add-Content コマンドレットはファイルに内容を追加するのに対し、Set-Content は現在の内容を置き換えます。内容は、コマンド中で指定するか、パイプラインを介して Set-Content に渡します。
パラメーター
-Credential <PSCredential>
この処理を実行するアクセス許可を持つユーザー アカウントを指定します。既定値は現在のユーザーです。
"User01" や "Domain01\User01" のようなユーザー名を入力するか、Get-Credential コマンドレットで生成されるような PSCredential オブジェクトを入力します。ユーザー名を入力すると、パスワードの入力を促すメッセージが表示されます。
このパラメーターは、Windows PowerShell でインストールされるプロバイダーではサポートされていません。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
true (ByPropertyName) |
ワイルドカード文字を許可する |
false |
-Exclude <string[]>
指定した項目を除外します。このパラメーターの値は、Path パラメーターを修飾します。"*.txt" などのパス要素またはパターンを入力します。ワイルドカードを使用できます。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Filter <string>
プロバイダーの形式や言語でフィルターを指定します。このパラメーターの値は、Path パラメーターを修飾します。ワイルドカードを使用できるかどうかなど、フィルターの構文はプロバイダーによって異なります。フィルターは他のパラメーターよりも効率が良い方法です。これは、オブジェクトを取得した後に Windows PowerShell がオブジェクトをフィルターするのではなく、オブジェクトを取得する際にプロバイダーがフィルターを適用するためです。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Force
ファイルが読み取り専用であっても、ファイルの内容をコマンドレットで設定できるようにします。実装はプロバイダーごとに異なります。詳細については、「about_Providers」を参照してください。Force パラメーターを使用しても、コマンドレットはセキュリティ制限を上書きできません。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Include <string[]>
指定した項目だけを変更します。このパラメーターの値は、Path パラメーターを修飾します。"*.txt" などのパス要素またはパターンを入力します。ワイルドカードを使用できます。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-LiteralPath <string[]>
内容を書き込む項目のパスを指定します。Path と異なり、LiteralPath の値は入力したとおりに使用されます。ワイルドカードとして解釈される文字はありません。パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。単一引用符で囲んだ文字はエスケープ シーケンスとして解釈されません。
必須 |
true |
位置 |
1 |
既定値 |
|
パイプライン入力を許可する |
true (ByPropertyName) |
ワイルドカード文字を許可する |
false |
-PassThru
内容を表すオブジェクトを返します。既定では、このコマンドレットによる出力はありません。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Path <string[]>
内容を書き込む項目のパスを指定します。ワイルドカードを使用できます。
必須 |
true |
位置 |
1 |
既定値 |
|
パイプライン入力を許可する |
true (ByPropertyName) |
ワイルドカード文字を許可する |
false |
-Value <Object[]>
項目の新しい内容を指定します。
必須 |
true |
位置 |
2 |
既定値 |
|
パイプライン入力を許可する |
true (ByValue, ByPropertyName) |
ワイルドカード文字を許可する |
false |
-Confirm
コマンドを実行する前に確認メッセージを表示します。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-WhatIf
実際にコマンドを実行せずに、コマンドを実行すると何が起きるかを出力します。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-UseTransaction
コマンドを有効なトランザクションに含めます。このパラメーターは、トランザクションの進行中のみ有効です。詳細については、「about_Transactions」を参照してください。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
<CommonParameters>
このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。詳細については、次を参照してください: about_Commonparameters.
入力と出力
入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。
入力 |
System.Object パイプを使用して項目の新しい値を含むオブジェクトを Set-Content コマンドレットに渡すことができます。 |
出力 |
なし、または System.String Passthru パラメーターを使用すると、Set-Content は内容を表す System.String オブジェクトを生成します。それ以外の場合、このコマンドレットによる出力はありません。 |
注
Set-Content は、その組み込みエイリアスである "sc" で参照することもできます。詳細については、「about_Aliases」を参照してください。
Set-Content は、文字列処理を目的としています。パイプを使用して文字列でないオブジェクトを Set-Content に渡すと、書き込む前に、そのオブジェクトが文字列に変換されます。オブジェクトをファイルに書き込むには、Out-File を使用してください。
Set-Content コマンドレットは、プロバイダーによって公開されているデータを使用するように設計されています。セッションで使用可能なプロバイダーの一覧を表示するには、「Get-PsProvider」と入力します。詳細については、「about_Providers」を参照してください。
例 1
C:\PS>set-content -path C:\Test1\test*.txt -value "Hello, World"
説明
-----------
このコマンドを実行すると、Test1 ディレクトリにあり、名前が "test" で始まるすべてのファイルの内容が "Hello, World" に置き換えられます。この例は、コマンド中で内容を指定する方法を示しています。
例 2
C:\PS>get-date | set-content C:\Test1\date.csv
説明
-----------
このコマンドを実行すると、現在の日付と時刻だけが格納された、コンマで区切られた可変長の (csv) ファイルが作成されます。システムの現在の日付と時刻を取得するために、Get-Date コマンドレットを使用しています。パイプライン演算子により結果が Set-Content に渡され、ファイルが作成されて内容が書き込まれます。
Test1 ディレクトリが存在しないとコマンドは失敗しますが、ファイルが存在しない場合はコマンドによって作成されます。
例 3
C:\PS>(get-content Notice.txt) | foreach-object {$_ -replace "Warning", "Caution"} | set-content Notice.txt
説明
-----------
このコマンドを実行すると、Notice.txt ファイル中のすべての "Warning" が "Caution" で置き換えられます。
Notice.txt の内容を取得するために、Get-Content コマンドレットを使用しています。パイプライン演算子により結果が ForEach-Object コマンドレットに渡され、Get-Content の内容の各行に式が適用されます。この式では、$_ 記号を使用して現在の項目を参照しており、Replace パラメーターを使用して置き換えるテキストを指定しています。
もう 1 つのパイプライン演算子により、変更された内容が Set-Content に渡され、Notice.txt の内容が新しい内容で置き換えられます。
Get-Content コマンドをかっこで囲んでいるので、取得操作が完了してから、設定操作が開始されます。かっこで囲まないと、2 つの関数が同じファイルにアクセスしようとするため、コマンドは失敗します。