次の方法で共有


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 は、新しいコンテンツを書き込むか、ファイル内のコンテンツを置き換える文字列処理コマンドレットです。 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-ContentPath パラメーターを使用してファイルを指定します Test*.txtValue パラメーターは、各ファイル内の既存のコンテンツを置き換えるテキスト文字列Hello World を提供します。 コマンドレットは Get-ContentPath パラメーターを使用してファイルを Test*.txt 指定し、各ファイルの内容を PowerShell コンソールに表示します。

例 2: 新しいファイルをCreateし、コンテンツを書き込む

次の使用例は、新しいファイルを作成し、現在の日時をファイルに書き込みます。

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-ContentDateTime オブジェクトを文字列としてファイルに書き込みます。 コマンドレットは Get-ContentPath パラメーターを使用して、PowerShell コンソールに DateTime.txt の内容を表示します。

例 3: ファイル内のテキストを置き換える

このコマンドは、既存のファイル内の word のすべてのインスタンスを置き換えます。

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-ContentPath パラメーターを使用して、現在のディレクトリ内の Notice.txt ファイルを指定します。 コマンドは Get-Content かっこで囲まれ、パイプラインに送信される前にコマンドが完了します。

Notice.txt ファイルの内容は、パイプラインから コマンドレットにForEach-Object送信されます。 ForEach-Object は自動変数 $_ を使用し、 警告 の各出現箇所を 注意深く置き換えます。 オブジェクトは、パイプラインの下にコマンドレットに Set-Content 送信されます。 Set-Contentは Path パラメーターを使用して Notice.txt ファイルを指定し、更新されたコンテンツをファイルに書き込みます。

最後 Get-Content のコマンドレットは、更新されたファイルの内容を PowerShell コンソールに表示します。

例 4: Set-Content でフィルターを使用する

コマンドレットにフィルターを Set-Content 指定できます。 フィルターを使用して Path パラメーターを修飾する場合は、パスの内容を示す末尾のアスタリスク (*) を含める必要があります。

次のコマンドは、ディレクトリ内のすべての *.txt ファイルの内容を C:\Temp[値 ] 空に設定します。

Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"

パラメーター

-Confirm

コマンドレットの実行前に確認を求めるメッセージが表示されます。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

注意

このパラメーターは、PowerShell でインストールされているプロバイダーではサポートされていません。 別のユーザーを偽装したり、このコマンドレットの実行時に資格情報を昇格したりするには、 Invoke-Command を使用します

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Encoding

ターゲット ファイルのエンコードの種類を指定します。 既定値は Defaultです。

エンコードは、FileSystem プロバイダーが に追加する Set-Content動的パラメーターです。 このパラメーターはファイル システム ドライブでのみ機能します。

このパラメーターに使用できる値は次のとおりです。

  • Ascii ASCII (7 ビット) 文字セットを使用します。
  • BigEndianUnicode ビッグ エンディアンバイト順で UTF-16 を使用します。
  • BigEndianUTF32 ビッグ エンディアンバイト順で UTF-32 を使用します。
  • バイト 一連の文字をバイトシーケンスにエンコードします。
  • 既定 システムのアクティブなコード ページ (通常は ANSI) に対応するエンコードを使用します。
  • Oem システムの現在の OEM コード ページに対応するエンコードを使用します。
  • 文字列Unicode と同じです。
  • Unicode リトル エンディアンバイト順で UTF-16 を使用します。
  • 未知Unicode と同じです。
  • UTF7 UTF-7 を使用します。
  • UTF8 UTF-8 を使用します。
  • UTF32 リトル エンディアン バイト順で UTF-32 を使用します。

エンコードは、FileSystem プロバイダーが に追加する Set-Content動的パラメーターです。 このパラメーターはファイル システム ドライブでのみ機能します。

Type:FileSystemCmdletProviderEncoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, Byte, Default, OEM, String, Unicode, Unknown, UTF7, UTF8, UTF32
Position:Named
Default value:Default
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Exclude

文字列配列として、このコマンドレットが操作で除外する項目を指定します。 このパラメーターの値は、Path パラメーターを修飾します。 などのパス要素またはパターンを *.txt入力します。 ワイルドカード文字を使用できます。 Exclude パラメーターは、コマンドに などのC:\Windows\*項目の内容が含まれている場合にのみ有効です。ここで、ワイルドカード文字はディレクトリの内容をC:\Windows指定します。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Filter

Path パラメーターを修飾するフィルターを指定します。 FileSystem プロバイダーは、フィルターの使用をサポートする唯一のインストール済み PowerShell プロバイダーです。 FileSystem フィルター言語の構文は、about_Wildcardsで確認できます。 プロバイダーは、取得後に PowerShell でオブジェクトをフィルター処理するのではなく、コマンドレットがオブジェクトを取得するときにフィルターを適用するため、他のパラメーターよりも効率的です。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Force

ファイルが読み取り専用の場合でも、コマンドレットでファイルの内容を強制的に設定します。 実装はプロバイダーごとに異なります。 詳細については、「about_Providers」を参照してください。 Force パラメーターは、セキュリティ制限をオーバーライドしません。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Include

文字列配列として、このコマンドレットが操作に含める項目を指定します。 このパラメーターの値は、Path パラメーターを修飾します。 などのパス要素またはパターンを "*.txt"入力します。 ワイルドカード文字を使用できます。 Include パラメーターは、コマンドに などのC:\Windows\*項目の内容が含まれている場合にのみ有効です。ワイルドカード文字はディレクトリの内容をC:\Windows指定します。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-LiteralPath

1 つ以上の場所へのパスを指定します。 LiteralPath の値は、型指定されたとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。 一重引用符は、文字をエスケープ シーケンスとして解釈しないように PowerShell に指示します。

詳細については、「 about_Quoting_Rules」を参照してください。

Type:String[]
Aliases:PSPath
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-NoNewline

入力オブジェクトの文字列表現が連結され、出力が形成されます。 出力文字列の間にスペースや改行は挿入されません。 最後の出力文字列の後に改行は追加されません。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

コンテンツを表す オブジェクトを返します。 既定では、このコマンドレットによる出力はありません。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

コンテンツを受け取るアイテムのパスを指定します。 ワイルドカード文字を使用できます。

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-Stream

コンテンツの代替データ ストリームを指定します。 ストリームが存在しない場合は、このコマンドレットによって作成されます。 ワイルドカード文字はサポートされていません。

Streamは、FileSystem プロバイダーが に追加するSet-Content動的パラメーターです。 このパラメーターはファイル システム ドライブでのみ機能します。

コマンドレットを Set-Content 使用して、 Zone.Identifier 代替データ ストリームの内容を変更できます。 ただし、インターネットからダウンロードされたファイルをブロックするセキュリティ チェックを排除する方法として、これをお勧めしません。 ダウンロードしたファイルが安全であることを確認する場合は、 コマンドレットを使用します Unblock-File

このパラメーターは、PowerShell 3.0 で導入されました。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseTransaction

アクティブなトランザクションのコマンドが含まれます。 このパラメーターは、トランザクションが進行中の場合のみ有効です。 詳細については、「about_Transactions」を参照してください。

Type:SwitchParameter
Aliases:usetx
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Value

項目の新しい内容を指定します。

Type:Object[]
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

コマンドレットの実行時に発生する内容を示します。 このコマンドレットは実行されません。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

Object

項目の新しい値を含むオブジェクトを に Set-Contentパイプできます。

出力

None or System.String

PassThru パラメーターを使用すると、Set-Contentコンテンツを表す System.String オブジェクトが生成されます。 それ以外の場合、このコマンドレットによる出力はありません。

メモ

  • 組み込みのエイリアス scで をSet-Content参照することもできます。 詳細については、「about_Aliases」を参照してください。
  • Set-Content は文字列処理用に設計されています。 文字列以外のオブジェクトを に Set-Contentパイプすると、オブジェクトが文字列に変換されてから書き込まれます。 オブジェクトをファイルに書き込むには、 を使用 Out-Fileします。
  • コマンドレットは Set-Content 、任意のプロバイダーによって公開されるデータを操作するように設計されています。 セッションで使用できるプロバイダーを一覧表示するには、「」と入力します Get-PsProvider。 詳細については、「about_Providers」を参照してください。