Get-Content
指定された場所の項目の内容を取得します。
構文
Get-Content
[-Path] <string[]>
[-ReadCount <long>]
[-TotalCount <long>]
[-Tail <int>]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-UseTransaction]
[-Delimiter <string>]
[-Wait]
[-Raw]
[-Encoding <FileSystemCmdletProviderEncoding>]
[-Stream <string>]
[<CommonParameters>]
Get-Content
-LiteralPath <string[]>
[-ReadCount <long>]
[-TotalCount <long>]
[-Tail <int>]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-UseTransaction]
[-Delimiter <string>]
[-Wait]
[-Raw]
[-Encoding <FileSystemCmdletProviderEncoding>]
[-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, or $DATA stream.
Get-Content -Path .\Stream.txt -Stream $DATA
This is the content of the Stream.txt file
# 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 -Encoding Byte -Raw
Get-Member -InputObject $bytearray
TypeName: System.Byte[]
Name MemberType Definition
---- ---------- ----------
Count AliasProperty Count = Length
Add Method int IList.Add(System.Object value)
最初のコマンドでは、 Encoding パラメーターを使用して、ファイルからバイトストリームを取得します。
Raw パラメーターを使用すると、バイトが として[System.Byte[]]
返されます。 Raw パラメーターが存在しない場合、戻り値はバイトストリームであり、PowerShell によって として[System.Object[]]
解釈されます。
パラメーター
-Credential
注意
このパラメーターは、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 つの非limited オブジェクトとして返されます。
このパラメーターを使用すると、区切り記号としてファイル区切り記号を指定することで、大きなファイルを小さなファイルに分割できます。 区切り文字は予約されています (破棄されません)。各ファイル セクションの最後の項目になります。
区切り記号 は、 FileSystem プロバイダーがコマンドレットに追加する Get-Content
動的パラメーターです。 このパラメーターはファイル システム ドライブでのみ機能します。
注意
現時点では、 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
ターゲット ファイルのエンコードの種類を指定します。 既定値は Defaultです。
このパラメーターに使用できる値は次のとおりです。
- 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 を使用します。
Encoding は、 FileSystem プロバイダーがコマンドレットに追加する Get-Content
動的パラメーターです。
このパラメーターはファイル システム ドライブでのみ機能します。
バイナリ ファイルからの読み取りとバイナリ ファイルへの書き込みの場合は、Encoding 動的パラメーターに Byte の値を、ReadCount パラメーターに値 0 を使用します。 ReadCount 値 0 は、1 回の読み取り操作でファイル全体を読み取り、1 つのオブジェクト (PSObject) に変換します。 既定の ReadCount 値 1 は、各読み取り操作で 1 バイトを読み取り、各バイトを個別のオブジェクトに変換します。これにより、コマンドレットを使用 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
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\*
項目の内容が含まれている場合にのみ有効です。ワイルドカード文字はディレクトリの内容を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 |
-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
指定した代替 NTFS ファイル ストリームの内容をファイルから取得します。 ストリーム名を入力します。 ワイルドカードはサポートされていません。
Streamは、FileSystem プロバイダーがコマンドレットに追加するGet-Content
動的パラメーターです。
このパラメーターは、Windows システム上のファイル システム ドライブでのみ機能します。 このパラメーターは Windows PowerShell 3.0 で導入されました。
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
ファイルまたはその他の項目の先頭からの行数を指定します。 既定値は -1 (すべての行) です。
TotalCount パラメーター名またはそのエイリアス (First または Head) を使用できます。
Type: | Int64 |
Aliases: | First, Head |
Position: | Named |
Default value: | -1 |
Required: | False |
Accept pipeline input: | True |
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 |
-Wait
既存のすべての行が出力された後も、ファイルを開いたままにします。 待機中に、 Get-Content
1 秒ごとにファイルを確認し、存在する場合は新しい行を出力します。 Ctrl キーを押しながら C キーを押すと、待機を中断できます。 ファイルが削除されると待機も終了します。その場合、終了しないエラーが報告されます。
Wait は、FileSystem プロバイダーがコマンドレットに追加する Get-Content
動的パラメーターです。 このパラメーターはファイル システム ドライブでのみ機能します。 待機 を Raw と組み合わせることはできません。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
入力
System.Int64, System.String[], System.Management.Automation.PSCredential
読み取り数、合計数、パス、または資格情報を に Get-Content
パイプできます。
出力
System.Byte, System.String
Get-Content
は文字列またはバイトを返します。 出力の種類は、入力として指定するコンテンツの種類によって異なります。
メモ
コマンドレットは Get-Content
、任意のプロバイダーによって公開されるデータを操作するように設計されています。 セッションでプロバイダーを取得するには、 コマンドレットを Get-PSProvider
使用します。 詳細については、「about_Providers」を参照してください。