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-Content、Path パラメーターを使用してファイルを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 stream.
# Note the single quotes to prevent variable substitution.
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

# Use the Stream parameter of Add-Content to create a new Stream containing sample content.
$addContentSplat = @{
    Path = '.\Stream.txt'
    Stream = 'NewStream'
    Value = 'Added a stream named NewStream to Stream.txt'
}
Add-Content @addContentSplat

# 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 パラメーターはエンコードを無視し、出力はバイト ストリームとして返されます。

バイナリ ファイルを読み取り、バイナリ ファイルに書き込む場合は、AsByteStream パラメーターを使用し、値 0 を ReadCount パラメーターに使用します。 ReadCount 値 0 は、1 回の読み取り操作でファイル全体を読み取ります。 既定 の ReadCount 値 1 は、各読み取り操作で 1 バイトを読み取り、各バイトを個別のオブジェクトに変換します。 AsByteStream パラメーターSet-Contentを使用しないSet-Content限り、1 バイト出力をパイプ処理するとエラーが発生します。

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

-Credential

Note

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

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

-Delimiter

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

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

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

Note

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

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

-Encoding

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

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

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

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

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すると警告が書き込まれます。

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

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

Type:SwitchParameter
Position:Named
Default value:False
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

-Path

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

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

-Raw

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

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

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

-ReadCount

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

このパラメーターは表示されるコンテンツを変更しませんが、コンテンツの表示にかかる時間には影響します。 ReadCount の値が大きくなると、最初の行を返すのにかかる時間は長くなりますが、操作の合計時間は減少します。 これにより、大きな項目で認識できる違いを生み出すことができます。

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

-Stream

Note

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

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

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

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

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

-Tail

ファイルまたは他の項目の末尾からの行数を指定します。 Tail パラメーター名またはそのエイリアス Last を使用できます。 負の値を指定すると、コマンドレットは内容全体を返します。

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

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

-TotalCount

ファイルまたはその他の項目の先頭からの行数を指定します。 負の値を指定すると、コマンドレットは内容全体を返します。

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

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

-Wait

コマンドレットを無期限に待機させ、中断されるまでファイルを開いたままにします。 待機中に、 Get-Content 1 秒に 1 回ファイルをチェックし、存在する場合は新しい行を出力します。 TotalCount パラメーターと共に使用する場合は、Get-Content指定したファイルで指定された行数が使用可能になるまで待機します。 たとえば、TotalCount を 10 に指定し、ファイルに既に 10 行以上ある場合は、10 行を返し、Get-Content終了します。 ファイルの行数が 10 行未満の場合は、 Get-Content 到着するたびに各行を出力しますが、10 行目が到着するまで待機してから終了します。

待機を中断するには、Ctrl C キー+を押します。 ファイルを削除すると、終了しないエラーが発生し、待機も中断されます。

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

Type:SwitchParameter
Position:Named
Default value:False
Required: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」を参照してください