Set-Content
新しいコンテンツを書き込むか、ファイル内の既存のコンテンツを置き換えます。
構文
Set-Content
[-Path] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[-NoNewline]
[-Encoding <FileSystemCmdletProviderEncoding>]
[-Stream <string>]
[<CommonParameters>]
Set-Content
[-Value] <Object[]>
-LiteralPath <string[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[-NoNewline]
[-Encoding <FileSystemCmdletProviderEncoding>]
[-Stream <string>]
[<CommonParameters>]
Set-Content
[-Path] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
Set-Content
[-Value] <Object[]>
-LiteralPath <string[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
説明
Set-Content
は、新しいコンテンツを書き込むか、ファイル内のコンテンツを置き換える文字列処理コマンドレットです。 Set-Content
は既存のコンテンツを置き換え、ファイルにコンテンツを追加する Add-Content
コマンドレットとは異なります。 Set-Content
にコンテンツを送信するには、コマンド ラインで Value パラメーターを使用するか、パイプライン経由でコンテンツを送信します。
次の例でファイルまたはディレクトリを作成する必要がある場合は、「 New-Itemを参照してください。
例
例 1: ディレクトリ内の複数のファイルの内容を置き換える
次の使用例は、現在のディレクトリ内の複数のファイルの内容を置き換えます。
Get-ChildItem -Path .\Test*.txt
Test1.txt
Test2.txt
Test3.txt
Set-Content -Path .\Test*.txt -Value 'Hello, World'
Get-Content -Path .\Test*.txt
Hello, World
Hello, World
Hello, World
Get-ChildItem
コマンドレットは、Path パラメーターを使用して、現在のディレクトリのTest*
で始まる.txtファイルを一覧表示します。 Set-Content
コマンドレットは、Path パラメーターを使用してTest*.txt
ファイルを指定します。 Value パラメーターは、各ファイル内の既存のコンテンツを置き換えるテキスト文字列 Hello, World を提供します。 Get-Content
コマンドレットは、Path パラメーターを使用してTest*.txt
ファイルを指定し、PowerShell コンソールに各ファイルの内容を表示します。
例 2: 新しいファイルを作成してコンテンツを書き込む
次の使用例は、新しいファイルを作成し、現在の日時をファイルに書き込みます。
Set-Content -Path .\DateTime.txt -Value (Get-Date)
Get-Content -Path .\DateTime.txt
1/30/2019 09:55:08
Set-Content
は、 Path パラメーターと Value パラメーターを使用して、現在のディレクトリに DateTime.txt という名前の新しいファイルを作成します。 Value パラメーターはGet-Date
を使用して現在の日付と時刻を取得します。
Set-Content
DateTime オブジェクトを文字列としてファイルに書き込みます。 Get-Content
コマンドレットは、Path パラメーターを使用して、PowerShell コンソールにDateTime.txtの内容を表示します。
例 3: ファイル内のテキストを置き換える
このコマンドは、既存のファイル内の単語のすべてのインスタンスを置き換えます。
Get-Content -Path .\Notice.txt
Warning
Replace Warning with a new word.
The word Warning was replaced.
(Get-Content -Path .\Notice.txt) |
ForEach-Object {$_ -Replace 'Warning', 'Caution'} |
Set-Content -Path .\Notice.txt
Get-Content -Path .\Notice.txt
Caution
Replace Caution with a new word.
The word Caution was replaced.
Get-Content
コマンドレットは、Path パラメーターを使用して、現在のディレクトリ内のNotice.txt ファイルを指定します。 Get-Content
コマンドはかっこで囲まれ、パイプラインに送信される前にコマンドが終了します。
Notice.txt ファイルの内容は、パイプラインから ForEach-Object
コマンドレットに送信されます。
ForEach-Object
は自動変数 $_
を使用し、 Warning の各出現箇所を Caution に置き換えます。 オブジェクトは、パイプラインから Set-Content
コマンドレットに送信されます。 Set-Content
では、 Path パラメーターを使用して Notice.txt ファイルを指定し、更新されたコンテンツをファイルに書き込みます。
最後の Get-Content
コマンドレットは、更新されたファイルの内容を PowerShell コンソールに表示します。
例 4: Set-Content でフィルターを使用する
Set-Content
コマンドレットにフィルターを指定できます。 フィルターを使用して Path パラメーターを修飾する場合は、パスの内容を示す末尾のアスタリスク (*
) を含める必要があります。
次のコマンドは、C:\Temp
ディレクトリ内のすべての*.txt
ファイルの内容を Value 空に設定します。
Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"
パラメーター
-Confirm
コマンドレットの実行前に確認を求めるメッセージが表示されます。
型: | SwitchParameter |
Aliases: | cf |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Credential
Note
このパラメーターは、PowerShell でインストールされているプロバイダーではサポートされていません。 別のユーザーを偽装したり、このコマンドレットの実行時に資格情報を昇格したりするには、 Invoke-Command を使用します。
型: | PSCredential |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Encoding
これは、 FileSystem プロバイダーによって使用できる動的パラメーターです。 詳細については、「 about_FileSystem_Provider」を参照してください。
ターゲット ファイルのエンコードの種類を指定します。 既定値は Default
です。
エンコードは、FileSystem プロバイダーが Set-Content
に追加する動的パラメーターです。 このパラメーターはファイル システム ドライブでのみ機能します。
このパラメーターに使用できる値は次のとおりです。
Ascii
ASCII (7 ビット) 文字セットを使用します。BigEndianUnicode
ビッグ エンディアンバイト順で UTF-16 を使用します。BigEndianUTF32
ビッグ エンディアンバイト順で UTF-32 を使用します。Byte
文字のセットをバイト シーケンスにエンコードします。Default
システムのアクティブなコード ページ (通常は ANSI) に対応するエンコードを使用します。Oem
システムの現在の OEM コード ページに対応するエンコードを使用します。String
Unicode
と同じです。Unicode
リトル エンディアン バイト順で UTF-16 を使用します。Unknown
Unicode
と同じです。UTF7
UTF-7 を使用します。UTF8
UTF-8 を使用します。UTF32
リトル エンディアンバイト順で UTF-32 を使用します。
エンコードは、FileSystem プロバイダーが Set-Content
に追加する動的パラメーターです。 このパラメーターはファイル システム ドライブでのみ機能します。
型: | FileSystemCmdletProviderEncoding |
指定可能な値: | ASCII, BigEndianUnicode, BigEndianUTF32, Byte, Default, OEM, String, Unicode, Unknown, UTF7, UTF8, UTF32 |
配置: | Named |
規定値: | Default |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Exclude
文字列配列として、このコマンドレットが操作で除外する項目を指定します。 このパラメーターの値は、 Path パラメーターを修飾します。 パス要素またはパターン ( *.txt
など) を入力します。 ワイルドカード文字を使用できます。 Exclude パラメーターは、コマンドに項目の内容 (ワイルドカード文字がC:\Windows
ディレクトリの内容を指定するC:\Windows\*
など) が含まれている場合にのみ有効です。
型: | String[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | True |
-Filter
Path パラメーターを修飾するフィルターを指定します。 FileSystem プロバイダーは、フィルターの使用をサポートする唯一のインストール済み PowerShell プロバイダーです。 FileSystem フィルター言語の構文は、about_Wildcardsにあります。 フィルターは、取得後に PowerShell でオブジェクトをフィルター処理するのではなく、コマンドレットがオブジェクトを取得するときにプロバイダーによって適用されるため、他のパラメーターよりも効率的です。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | True |
-Force
ファイルが読み取り専用の場合でも、コマンドレットでファイルの内容を設定するように強制します。 実装はプロバイダーごとに異なります。 詳細については、「 about_Providers」を参照してください。 Force パラメーターは、セキュリティ制限をオーバーライドしません。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Include
文字列配列として、このコマンドレットが操作に含める項目を指定します。 このパラメーターの値は、 Path パラメーターを修飾します。 パス要素またはパターン ( "*.txt"
など) を入力します。 ワイルドカード文字を使用できます。 Include パラメーターは、コマンドに項目の内容 (ワイルドカード文字がC:\Windows
ディレクトリの内容を指定するC:\Windows\*
など) が含まれている場合にのみ有効です。
型: | String[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | True |
-LiteralPath
1 つ以上の場所へのパスを指定します。 LiteralPath の値は、型指定されたとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。 単一引用符は、エスケープ シーケンスとして文字を解釈しないように PowerShell に指示します。
詳細については、「 about_Quoting_Rules」を参照してください。
型: | String[] |
Aliases: | PSPath |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-NoNewline
これは、 FileSystem プロバイダーによって使用できる動的パラメーターです。 詳細については、「 about_FileSystem_Provider」を参照してください。
入力オブジェクトの文字列形式が連結されて出力が形成されます。 出力文字列の間にスペースや改行は挿入されません。 最後の出力文字列の後に改行は追加されません。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-PassThru
コンテンツを表すオブジェクトを返します。 既定では、このコマンドレットによる出力はありません。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Path
コンテンツを受け取るアイテムのパスを指定します。 ワイルドカード文字を使用できます。
型: | String[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | True |
-Stream
これは、 FileSystem プロバイダーによって使用できる動的パラメーターです。 このパラメーターは Windows でのみ使用できます。 詳細については、「 about_FileSystem_Provider」を参照してください。
コンテンツの代替データ ストリームを指定します。 ストリームが存在しない場合は、このコマンドレットによって作成されます。 ワイルドカード文字はサポートされていません。
Stream は、 FileSystem プロバイダーが Set-Content
に追加する動的パラメーターです。 このパラメーターはファイル システム ドライブでのみ機能します。
Set-Content
コマンドレットを使用して、Zone.Identifier
などの代替データ ストリームのコンテンツを作成または更新できます。 ただし、インターネットからダウンロードされたファイルをブロックするセキュリティ チェックを排除する方法として、これはお勧めしません。 ダウンロードしたファイルが安全であることを確認する場合は、 Unblock-File
コマンドレットを使用します。
このパラメーターは PowerShell 3.0 で導入されました。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-UseTransaction
アクティブなトランザクションのコマンドが含まれます。 このパラメーターは、トランザクションが進行中の場合のみ有効です。 詳細については、「 about_Transactions」を参照してください。
型: | SwitchParameter |
Aliases: | usetx |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Value
項目の新しい内容を指定します。
型: | Object[] |
配置: | 1 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-WhatIf
コマンドレットの実行時に発生する内容を示します。 このコマンドレットは実行されません。
型: | SwitchParameter |
Aliases: | wi |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
項目の新しい値を含むオブジェクトをこのコマンドレットにパイプできます。
出力
None
既定では、このコマンドレットは出力を返しません。
PassThru パラメーターを使用すると、このコマンドレットはコンテンツを表す文字列を返します。
メモ
Windows PowerShell には、 Set-Content
の次のエイリアスが含まれています。
sc
Set-Content
は文字列処理用に設計されています。 文字列以外のオブジェクトをパイプしてSet-Content
すると、オブジェクトを書き込む前に文字列に変換されます。 オブジェクトをファイルに書き込むには、Out-File
を使用します。Set-Content
コマンドレットは、任意のプロバイダーによって公開されるデータを操作するように設計されています。 セッションで使用可能なプロバイダーを一覧表示するには、「Get-PsProvider
」と入力します。 詳細については、「 about_Providers」を参照してください。
関連リンク
PowerShell