次の方法で共有


Add-Content

指定した項目に内容を追加します。たとえば、ファイルに語を追加します。

構文

Add-Content
   [-Path] <string[]>
   [-Value] <Object[]>
   [-PassThru]
   [-Filter <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Force]
   [-Credential <pscredential>]
   [-WhatIf]
   [-Confirm]
   [-NoNewline]
   [-Encoding <Encoding>]
   [-AsByteStream]
   [-Stream <string>]
   [<CommonParameters>]
Add-Content
   [-Value] <Object[]>
   -LiteralPath <string[]>
   [-PassThru]
   [-Filter <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Force]
   [-Credential <pscredential>]
   [-WhatIf]
   [-Confirm]
   [-NoNewline]
   [-Encoding <Encoding>]
   [-AsByteStream]
   [-Stream <string>]
   [<CommonParameters>]

説明

Add-Content コマンドレットは、指定した項目またはファイルにコンテンツを追加します。 コンテンツはパイプラインから渡すか、 Value パラメーターを使用して指定できます。

次の例でファイルまたはディレクトリを作成する必要がある場合は、「 New-Itemを参照してください。

例 1: 例外を含むすべてのテキスト ファイルに文字列を追加する

次の使用例は、現在のディレクトリ内のテキスト ファイルに値を追加しますが、ファイル名に基づいてファイルを除外します。

Add-Content -Path .\*.txt -Exclude help* -Value 'End of file'

Path パラメーターは現在のディレクトリ内のすべての.txtファイルを指定しますが、Exclude パラメーターは、指定したパターンに一致するファイル名を無視します。 Value パラメーターは、ファイルに書き込まれるテキスト文字列を指定します。

Get-Content を使用して、これらのファイルの内容を表示します。

例 2: 指定したファイルの末尾に日付を追加する

次の使用例は、現在のディレクトリ内のファイルに日付を追加し、PowerShell コンソールに日付を表示します。

Add-Content -Path .\DateTimeFile1.log, .\DateTimeFile2.log -Value (Get-Date) -PassThru
Get-Content -Path .\DateTimeFile1.log

Tuesday, May 14, 2019 8:24:27 AM
Tuesday, May 14, 2019 8:24:27 AM
5/14/2019 8:24:27 AM

Add-Content コマンドレットは、現在のディレクトリに 2 つの新しいファイルを作成します。 Value パラメーターには、Get-Date コマンドレットの出力が含まれています。 PassThru パラメーターは、追加された内容をパイプラインに出力します。 出力を受け取るコマンドレットは他にないため、PowerShell コンソールに表示されます。 Get-Content コマンドレットは、更新されたファイル (DateTimeFile1.log) を表示します。

例 3: 指定したファイルの内容を別のファイルに追加する

この例では、ファイルからコンテンツを取得し、その内容を変数に格納します。 この変数は、コンテンツを別のファイルに追加するために使用されます。

$From = Get-Content -Path .\CopyFromFile.txt
Add-Content -Path .\CopyToFile.txt -Value $From
Get-Content -Path .\CopyToFile.txt
  • Get-Content コマンドレットは、CopyFromFile.txtの内容を取得し、その内容を $From 変数に格納します。
  • Add-Content コマンドレットは、$From変数の内容を使用してCopyToFile.txt ファイルを更新します。
  • Get-Content コマンドレットは、CopyToFile.txtを表示します。

例 4: パイプラインを使用して、指定したファイルの内容を別のファイルに追加する

この例では、ファイルからコンテンツを取得し、 Add-Content コマンドレットにパイプ処理します。

Get-Content -Path .\CopyFromFile.txt | Add-Content -Path .\CopyToFile.txt
Get-Content -Path .\CopyToFile.txt

Get-Content コマンドレットは、CopyFromFile.txtの内容を取得します。 結果は、 Add-Content コマンドレットにパイプ処理され、 CopyToFile.txtが更新されます。 最後の Get-Content コマンドレットには、 CopyToFile.txtが表示されます。

例 5: 新しいファイルを作成してコンテンツをコピーする

次の使用例は、新しいファイルを作成し、既存のファイルの内容を新しいファイルにコピーします。

Add-Content -Path .\NewFile.txt -Value (Get-Content -Path .\CopyFromFile.txt)
Get-Content -Path .\NewFile.txt
  • Add-Content コマンドレットは、Path パラメーターと Value パラメーターを使用して、現在のディレクトリに新しいファイルを作成します。
  • Get-Content コマンドレットは、既存のファイルの内容を取得してCopyFromFile.txtし、Value パラメーターに渡します。 Get-Content コマンドレットのかっこを使用すると、Add-Content コマンドが開始する前にコマンドが完了します。
  • Get-Content コマンドレットは、新しいファイルの内容 (NewFile.txt) を表示します。

例 6: 読み取り専用ファイルにコンテンツを追加する

このコマンドは、 IsReadOnly ファイル属性が True に設定されている場合でも、ファイルに値を追加します。 この例では、読み取り専用ファイルを作成する手順を示します。

New-Item -Path .\IsReadOnlyTextFile.txt -ItemType File
Set-ItemProperty -Path .\IsReadOnlyTextFile.txt -Name IsReadOnly -Value $True
Get-ChildItem -Path .\IsReadOnlyTextFile.txt
Add-Content -Path .\IsReadOnlyTextFile.txt -Value 'Add value to read-only text file' -Force
Get-Content -Path .\IsReadOnlyTextFile.txt

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-ar--         1/28/2019     13:35              0 IsReadOnlyTextFile.txt
  • New-Item コマンドレットは、Path パラメーターと ItemType パラメーターを使用して、現在のディレクトリにファイル IsReadOnlyTextFile.txtを作成します。
  • Set-ItemProperty コマンドレットは、Name パラメーターと Value パラメーターを使用して、ファイルの IsReadOnly プロパティを True に変更します。
  • Get-ChildItem コマンドレットは、ファイルが空 (0) であり、読み取り専用属性 (r) を持っている場合を示します。
  • Add-Content コマンドレットは、Path パラメーターを使用してファイルを指定します。 Value パラメーターには、ファイルに追加するテキスト文字列が含まれています。 Force パラメーターは、テキストを読み取り専用ファイルに書き込みます。
  • Get-Content コマンドレットは、Path パラメーターを使用してファイルの内容を表示します。

読み取り専用属性を削除するには、 Set-ItemProperty コマンドを使用し、 Value パラメーターを False に設定します。

例 7: 追加コンテンツでフィルターを使用する

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

次のコマンドは、C:\Temp ディレクトリ内のすべての*.txt ファイルの内容に "Done" という単語を追加します。

Add-Content -Path C:\Temp\* -Filter *.txt -Value "Done"

パラメーター

-AsByteStream

コンテンツをバイト ストリームとして読み取る必要があることを指定します。 このパラメーターは、PowerShell 6.0 で導入されました。

Encoding パラメーターで AsByteStream パラメーターを使用すると警告が発生します。 AsByteStream パラメーターはエンコードを無視し、出力はバイト ストリームとして返されます。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Confirm

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

型:SwitchParameter
Aliases:cf
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Credential

Note

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

型:PSCredential
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-Encoding

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

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

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

  • ascii: ASCII (7 ビット) 文字セットのエンコードを使用します。
  • ansi: 現在のカルチャの ANSI コード ページのエンコードを使用します。 このオプションは PowerShell 7.4 で追加されました。
  • bigendianunicode: ビッグ エンディアンバイト順を使用して UTF-16 形式でエンコードします。
  • bigendianutf32: ビッグ エンディアンバイト順を使用して UTF-32 形式でエンコードします。
  • oem: MS-DOS およびコンソール プログラムの既定のエンコードを使用します。
  • unicode: リトル エンディアンバイト順を使用して UTF-16 形式でエンコードします。
  • utf7: UTF-7 形式でエンコードします。
  • utf8: UTF-8 形式でエンコードします。
  • utf8BOM: バイト オーダー マーク (BOM) を使用して UTF-8 形式でエンコードします。
  • utf8NoBOM: バイト オーダー マーク (BOM) を使用せずに UTF-8 形式でエンコードします。
  • utf32: UTF-32 形式でエンコードします。

PowerShell 6.2 以降では、 Encoding パラメーターを使用すると、登録済みのコード ページの数値 ID ( -Encoding 1251 など) や登録済みコード ページの文字列名 ( -Encoding "windows-1251" など) も使用できます。 詳細については、 Encoding.CodePage の .NET ドキュメントを参照してください。

PowerShell 7.4 以降では、Encoding パラメーターのAnsi値を使用して、手動で指定しなくても、現在のカルチャの ANSI コード ページの数値 ID を渡すことができます。

Note

UTF-7* を使用することは推奨されなくなりました。 PowerShell 7.1 の時点で、Encoding パラメーターにutf7を指定すると警告が書き込まれます。

型:Encoding
指定可能な値:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
配置:Named
規定値:UTF8NoBOM
必須: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

読み取り専用属性をオーバーライドし、読み取り専用ファイルに内容を追加できるようにします。 たとえば、 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, LP
配置:Named
規定値:None
必須:True
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-NoNewline

このコマンドレットが新しい行または復帰をコンテンツに追加しないことを示します。

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

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-PassThru

追加された内容を表すオブジェクトを返します。 既定では、このコマンドレットは出力を生成しません。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Path

内容を追加する項目へのパスを指定します。 ワイルドカード文字を使用できます。 コンテナーのパスではなく、項目のパスを指定してください。 たとえば、ディレクトリのパスではなく、1 つ以上のファイルのパスを指定する必要があります。 複数のパスを指定する場合は、各パスをコンマで区切ります。

型:String[]
配置:0
規定値:None
必須:True
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:True

-Stream

Note

このパラメーターは Windows でのみ使用できます。

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

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

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

このパラメーターは PowerShell 3.0 で導入されました。 PowerShell 7.2 の時点で、 Add-Content はファイルとディレクトリの両方で代替データ ストリームをターゲットにすることができます。

型:String
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Value

追加する内容を指定します。 引用符で囲まれた文字列を入力します (例: このデータは内部使用専用です、またはGet-Date生成する DateTime オブジェクトなどのコンテンツを含むオブジェクトを指定します。

パスは単なる文字列であるため、パスを入力してファイルの内容を指定することはできません。 Get-Content コマンドを使用してコンテンツを取得し、Value パラメーターに渡すことができます。

型:Object[]
配置:1
規定値:None
必須:True
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-WhatIf

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

型:SwitchParameter
Aliases:wi
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

Object

パイプ値を Add-Contentできます。

PSCredential

資格情報をパイプ処理して Add-Contentできます。

出力

None

既定では、このコマンドレットは出力を返しません。

String

PassThru パラメーターを使用すると、このコマンドレットはコンテンツを表す System.String オブジェクトを返します。

メモ

PowerShell には、 Add-Contentの次のエイリアスが含まれています。

  • Windows:

    • ac
  • パイプを使用してオブジェクトを Add-Contentすると、オブジェクトはアイテムに追加される前に文字列に変換されます。 オブジェクト型によって文字列の形式が決まりますが、オブジェクトの既定の表示形式と異なる場合があります。 文字列の形式を制御するには、送信コマンドレットの書式設定パラメーターを使用します。

  • Add-Content コマンドレットは、任意のプロバイダーによって公開されるデータを操作するように設計されています。 セッションで使用可能なプロバイダーを一覧表示するには、「 Get-PSProvider」と入力します。 詳細については、「 about_Providers」を参照してください。