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-ContentDateTimeFile1.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 、変数の CopyToFile.txt 内容を使用してファイルを $From 更新します。
  • コマンドレットに 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-ContentPath パラメーターと Value パラメーターを使用して、現在のディレクトリに新しいファイルを作成します。
  • コマンドレットはGet-Content、既存のファイルの内容を取得し、 CopyFromFile.txt Value パラメーターに渡します。 コマンドレットのかっこを Get-Content 使用すると、コマンドが開始する前にコマンドが Add-Content 完了します。
  • コマンドレットは Get-ContentNewFile.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-ItemPath パラメーターと ItemType パラメーターを使用して、現在のディレクトリにファイル IsReadOnlyTextFile.txt を作成します。
  • このコマンドレットでは Set-ItemPropertyName パラメーターと Value パラメーターを使用して、ファイルの IsReadOnly プロパティを True に 変更します。
  • このコマンドレットは Get-ChildItem 、ファイルが空 (0) で、読み取り専用属性 (r) を持っている場合を示します。
  • このコマンドレットではAdd-Content、Path パラメーターを使用してファイルを指定します。 Value パラメーターには、ファイルに追加するテキスト文字列が含まれています。 Force パラメーターは、テキストを読み取り専用ファイルに書き込みます。
  • このコマンドレットではGet-Content、Path パラメーターを使用してファイルの内容を表示します。

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

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

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

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

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

パラメーター

-AsByteStream

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

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

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

-Confirm

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

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

-Credential

Note

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

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

-Encoding

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

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

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

  • ascii: ASCII (7 ビット) 文字セットのエンコードを使用します。
  • 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 ドキュメントを 参照してください

Note

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

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Exclude

文字列配列として、このコマンドレットが操作で除外する項目を指定します。 このパラメーターの値は、Path パラメーターを修飾します。 パス要素またはパターンを入力します (例 *.txt: . ワイルドカード文字を使用できます。 Exclude パラメーターは、コマンドに項目の内容 (wildカード 文字がディレクトリの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_Wildカードで確認できます。 フィルターは、取得後に PowerShell でオブジェクトをフィルター処理するのではなく、コマンドレットがオブジェクトを取得するときにプロバイダーによって適用されるため、他のパラメーターよりも効率的です。

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

-Force

読み取り専用属性をオーバーライドし、読み取り専用ファイルに内容を追加できるようにします。 たとえば、 強制的 に読み取り専用属性をオーバーライドしますが、ファイルのアクセス許可は変更されません。

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

-Include

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

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

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

-Stream

Note

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

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

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

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

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

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

-Value

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

パスは単なる文字列であるため、パスを入力してファイルの内容を指定することはできません。 コマンドをGet-Content使用してコンテンツを取得し、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

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

PSCredential

資格情報 Add-Contentをパイプで接続できます。

出力

None

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

String

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

メモ

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

  • Windows の場合:

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

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