Get-Content

指定された場所の項目の内容を取得します。

構文

Get-Content
   [-ReadCount <Int64>]
   [-TotalCount <Int64>]
   [-Tail <Int32>]
   [-Path] <String[]>
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-Force]
   [-Credential <PSCredential>]
   [-Delimiter <String>]
   [-Wait]
   [-Raw]
   [-Encoding <Encoding>]
   [-AsByteStream]
   [-Stream <String>]
   [<CommonParameters>]
Get-Content
   [-ReadCount <Int64>]
   [-TotalCount <Int64>]
   [-Tail <Int32>]
   -LiteralPath <String[]>
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-Force]
   [-Credential <PSCredential>]
   [-Delimiter <String>]
   [-Wait]
   [-Raw]
   [-Encoding <Encoding>]
   [-AsByteStream]
   [-Stream <String>]
   [<CommonParameters>]

説明

コマンドレットは Get-Content 、ファイル内のテキストや関数の内容など、パスで指定された場所にある項目の内容を取得します。 ファイルの場合、コンテンツは一度に 1 行ずつ読み取られ、オブジェクトのコレクションが返され、それぞれがコンテンツの行を表します。

PowerShell 3.0 以降では、 Get-Content アイテムの先頭または末尾から指定した行数を取得することもできます。

例 1: テキスト ファイルの内容を取得する

この例では、現在のディレクトリ内のファイルの内容を取得します。 ファイルには LineNumbers.txt 100 行の形式が含まれています。 これは行 X で、いくつかの例で使用されます。

1..100 | ForEach-Object { Add-Content -Path .\LineNumbers.txt -Value "This is line $_." }
Get-Content -Path .\LineNumbers.txt

This is Line 1
This is Line 2
...
This is line 99.
This is line 100.

配列値 1 から 100 は、パイプラインをコマンドレットに ForEach-Object 送信します。 ForEach-Object では、 コマンドレットを使用してスクリプト ブロックを Add-Content 使用してファイルを作成します LineNumbers.txt 。 変数 $_ は、各オブジェクトがパイプラインに送信されるときに配列値を表します。 コマンドレットは Get-ContentPath パラメーターを使用してファイルを LineNumbers.txt 指定し、PowerShell コンソールにコンテンツを表示します。

例 2: 戻り値の行数Get-Content制限する

このコマンドは、ファイルの最初の 5 行を取得します。 TotalCount パラメーターは、コンテンツの最初の 5 行を取得するために使用されます。 この例では、 LineNumbers.txt 例 1 で作成したファイルを使用します。

Get-Content -Path .\LineNumbers.txt -TotalCount 5

This is Line 1
This is Line 2
This is Line 3
This is Line 4
This is Line 5

例 3: テキスト ファイルから特定のコンテンツ行を取得する

このコマンドは、ファイルから特定の行数を取得し、そのコンテンツの最後の行のみを表示します。 TotalCount パラメーターは、コンテンツの最初の 25 行を取得します。 この例では、 LineNumbers.txt 例 1 で作成したファイルを使用します。

(Get-Content -Path .\LineNumbers.txt -TotalCount 25)[-1]

This is Line 25

コマンドは Get-Content かっこで囲まれ、次の手順に進む前にコマンドが完了します。 Get-Contentは行の配列を返します。これにより、かっこの後にインデックス表記を追加して、特定の行番号を取得できます。 この場合、インデックスは [-1] 、取得された 25 行の返された配列の最後のインデックスを指定します。

例 4: テキスト ファイルの最後の行を取得する

このコマンドは、ファイルからコンテンツの最後の行を取得します。 この例では、 LineNumbers.txt 例 1 で作成したファイルを使用します。

Get-Item -Path .\LineNumbers.txt | Get-Content -Tail 1

This is Line 100

この例では、 コマンドレットを Get-Item 使用して、 パラメーターに Get-Content ファイルをパイプできることを示します。 Tail パラメーターは、ファイルの最後の行を取得します。 このメソッドは、すべての行を取得し、インデックス表記を使用する [-1] よりも高速です。

例 5: 代替データ ストリームのコンテンツを取得する

この例では、 Stream パラメーターを使用して、Windows NTFS ボリュームに格納されているファイルの代替データ ストリームのコンテンツを取得する方法について説明します。 この例では、 コマンドレットを Set-Content 使用して、 という名前 Stream.txtのファイルにサンプル コンテンツを作成します。

Set-Content -Path .\Stream.txt -Value 'This is the content of the Stream.txt file'
# Specify a wildcard to the Stream parameter to display all streams of the recently created file.
Get-Item -Path .\Stream.txt -Stream *

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt::$DATA
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName   : Stream.txt::$DATA
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\Test\Stream.txt
Stream        : :$DATA
Length        : 44

# Retrieve the content of the primary, or $DATA stream.    # Retrieve the content of the primary stream. Note the singlequotes to prevent variable substitution.
Get-Content -Path .\Stream.txt -Stream $DATA    Get-Content -Path .\Stream.txt -Stream ':$DATA'

This is the content of the Stream.txt file

# Alternative way to get the same content.
Get-Content -Path .\Stream.txt -Stream ""
# The primary stream doesn't need to be specified to get the primary stream of the file.
# This gets the same data as the prior two examples.
Get-Content -Path .\Stream.txt

This is the content of the Stream.txt file

# The primary stream doesn't need to be specified to get the primary stream of the file.
# This gets the same data as the prior two examples.
Get-Content -Path .\Stream.txt

# Use the Stream parameter of Add-Content to create a new Stream containing sample content.
Add-Content -Path .\Stream.txt -Stream NewStream -Value 'Added a stream named NewStream to Stream.txt'
# Use Get-Item to verify the stream was created.
Get-Item -Path .\Stream.txt -Stream *

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt::$DATA
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName   : Stream.txt::$DATA
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\Test\Stream.txt
Stream        : :$DATA
Length        : 44

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt:NewStream
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName   : Stream.txt:NewStream
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\Test\Stream.txt
Stream        : NewStream
Length        : 46

# Retrieve the content of your newly created Stream.
Get-Content -Path .\Stream.txt -Stream NewStream

Added a stream named NewStream to Stream.txt

Stream パラメーターは、FileSystem プロバイダーの動的パラメーターです。 既定では、既定 Get-Content:$DATA ストリームからデータのみを取得します。 ストリーム を使用して、属性、セキュリティ設定、その他のデータなどの非表示のデータを格納できます。 また、子項目なしでディレクトリに格納することもできます。

例 6: 生コンテンツを取得する

この例のコマンドは、文字列の配列ではなく、1 つの文字列としてファイルの内容を取得します。 既定では、 Raw 動的パラメーターを指定しないと、改行で区切られた文字列の配列としてコンテンツが返されます。 この例では、 LineNumbers.txt 例 1 で作成したファイルを使用します。

$raw = Get-Content -Path .\LineNumbers.txt -Raw
$lines = Get-Content -Path .\LineNumbers.txt
Write-Host "Raw contains $($raw.Count) lines."
Write-Host "Lines contains $($lines.Count) lines."

Raw contains 1 lines.
Lines contains 100 lines.

例 7: Get-Contentでフィルターを使用する

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

次のコマンドは、ディレクトリ内のすべての *.log ファイルの内容を C:\Temp 取得します。

Get-Content -Path C:\Temp\* -Filter *.log

例 8: ファイルの内容をバイト配列として取得する

この例では、 としてファイルの内容を 1 つのオブジェクトとして [byte[]] 取得する方法を示します。

$byteArray = Get-Content -Path C:\temp\test.txt -AsByteStream -Raw
Get-Member -InputObject $bytearray

TypeName: System.Byte[]

Name           MemberType            Definition
----           ----------            ----------
Count          AliasProperty         Count = Length
Add            Method                int IList.Add(System.Object value)

最初のコマンドでは 、AsByteStream パラメーターを使用して、ファイルからバイトストリームを取得します。 Raw パラメーターを使用すると、バイトが として[System.Byte[]]返されます。 Raw パラメーターが存在しない場合、戻り値はバイトストリームであり、PowerShell によって として[System.Object[]]解釈されます。

パラメーター

-AsByteStream

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

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

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

-Credential

注意

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

Type:PSCredential
Position:Named
Default value:Current user
Accept pipeline input:True
Accept wildcard characters:False

-Delimiter

を使用して Get-Content 、ファイルを読み取り中にオブジェクトに分割する区切り記号を指定します。 既定値は \n、行末文字です。 テキスト ファイルを読み取るときに、 Get-Content は文字列オブジェクトのコレクションを返します。各オブジェクトは行末文字で終わります。 ファイルに存在しない区切り記号を入力すると、 Get-Content ファイル全体が 1 つの非limited オブジェクトとして返されます。

このパラメーターを使用すると、区切り記号としてファイル区切り記号を指定することで、大きなファイルを小さなファイルに分割できます。 区切り文字は予約されています (破棄されません)。各ファイル セクションの最後の項目になります。

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

注意

現時点では、 Delimiter パラメーターの値が空の文字列の場合、 Get-Content 何も返されません。 これは既知の問題です。 Get-Content強制的にファイル全体を単一の非limited文字列として返します。 ファイルに存在しない値を入力します。

Type:String
Position:Named
Default value:End-of-line character
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

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

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

  • 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 形式でエンコードします。

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

バイナリ ファイルからの読み取りとバイナリ ファイルへの書き込み時には、 AsByteStream パラメーターと ReadCount パラメーターの値 0 を使用します。 ReadCount 値 0 は、1 回の読み取り操作でファイル全体を読み取ります。 既定の ReadCount 値 1 は、読み取り操作ごとに 1 バイトを読み取り、各バイトを個別のオブジェクトに変換します。これにより、AsByteStream パラメーターを使用しない限り、コマンドレットを使用Set-Contentしてファイルにバイトを書き込む際にエラーが発生します。

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

注意

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
Accept pipeline input:False
Accept wildcard characters:False

-Exclude

文字列配列として、このコマンドレットが操作で除外する項目を指定します。 このパラメーターの値は、Path パラメーターを修飾します。

などのパス要素またはパターンを *.txt入力します。 ワイルドカード文字を使用できます。

Exclude パラメーターは、コマンドに などのC:\Windows\*項目の内容が含まれている場合にのみ有効です。ワイルドカード文字はディレクトリの内容をC:\Windows指定します。

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

-Filter

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

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

-Force

Force は読み取り専用属性をオーバーライドするか、ディレクトリを作成してファイル パスを完了します。 Force パラメーターは、ファイルのアクセス許可の変更やセキュリティ制限のオーバーライドを試みません。

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

-Include

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

Type:String[]
Position:Named
Default value:None
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
Accept pipeline input:True
Accept wildcard characters:False

-Path

コンテンツを取得する項目へのパスを指定します Get-Content 。 ワイルドカード文字を使用できます。 コンテナーのパスではなく、項目のパスを指定してください。 たとえば、ディレクトリのパスではなく、1 つ以上のファイルのパスを指定する必要があります。

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

-Raw

改行文字を無視し、改行が保持されている 1 つの文字列内のファイルの内容全体を返します。 既定では、ファイル内の改行文字は、入力を文字列の配列に区切る区切り記号として使用されます。 このパラメーターは、PowerShell 3.0 で導入されました。

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

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

-ReadCount

パイプライン経由で、一度に何行の内容を送るかを指定します。 既定値は 1 です。 値が 0 (ゼロ) の場合は、すべての内容が一度に送信されます。

このパラメーターによって表示される内容が変わることはありませんが、内容を表示する時間には影響を与えます。 ReadCount の値を大きくすると、最初の行を返すまでの時間は長くなりますが、処理全体の時間が短くなります。 これにより、大きな項目で認識できる違いを生み出すことができます。

Type:Int64
Position:Named
Default value:1
Accept pipeline input:True
Accept wildcard characters:False

-Stream

注意

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

指定した代替 NTFS ファイル ストリームの内容をファイルから取得します。 ストリーム名を入力します。 ワイルドカードはサポートされていません。

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

このパラメーターは Windows PowerShell 3.0 で導入されました。 PowerShell 7.2 では、Get-Contentディレクトリとファイルから代替データ ストリームのコンテンツを取得できます。

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

-Tail

ファイルまたは他の項目の末尾からの行数を指定します。 Tail パラメーター名またはそのエイリアス Last を使用できます。 このパラメーターは、PowerShell 3.0 で導入されました。

Type:Int32
Aliases:Last
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

-TotalCount

ファイルまたはその他の項目の先頭からの行数を指定します。 既定値は -1 (すべての行) です。

TotalCount パラメーター名またはそのエイリアスである First または Head を使用できます。

Type:Int64
Aliases:First, Head
Position:Named
Default value:-1
Accept pipeline input:True
Accept wildcard characters:False

-Wait

既存のすべての行が出力された後も、ファイルを開いたままにします。 待機中に、 Get-Content ファイルを 1 秒ごとに 1 回確認し、存在する場合は新しい行を出力します。 Ctrl キーを押しながら C キーを押すと、待機を中断できます。 ファイルが削除された場合も待機は終了します。その場合、終了しないエラーが報告されます。

Wait は、FileSystem プロバイダーがコマンドレットに追加する Get-Content 動的パラメーターです。 このパラメーターはファイル システム ドライブでのみ機能します。 待機Raw と組み合わせることはできません。

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

入力

Int64

読み取り数または合計カウントをこのコマンドレットにパイプできます。

String[]

このコマンドレットにパスをパイプできます。

PSCredential

資格情報をこのコマンドレットにパイプできます。

出力

Byte

AsByteStream パラメーターを使用すると、このコマンドレットはコンテンツをバイトとして返します。

String

既定では、このコマンドレットは、1 行に 1 つずつ、文字列の配列としてコンテンツを返します。 Raw パラメーターを使用すると、ファイル内のすべての行を含む 1 つの文字列が返されます。

メモ

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

  • すべてのプラットフォーム:
    • gc
    • type
  • Windows の場合:
    • cat

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