Get-Content
指定した場所にある項目の内容を取得します。
構文
Get-Content
[-ReadCount <Int64>]
[-TotalCount <Int64>]
[-Tail <Int32>]
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Force]
[-Credential <PSCredential>]
[-UseTransaction]
[-Delimiter <String>]
[-Wait]
[-Raw]
[-Encoding <FileSystemCmdletProviderEncoding>]
[-Stream <String>]
[<CommonParameters>]
Get-Content
[-ReadCount <Int64>]
[-TotalCount <Int64>]
[-Tail <Int32>]
-LiteralPath <String[]>
[-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 行を取得します。 この例では、例 1 で参照されている LineNumbers.txt
を使用します。
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 行のコンテンツを取得します。 この例では、例 1 で参照されている LineNumbers.txt
ファイルを使用します。
(Get-Content -Path .\LineNumbers.txt -TotalCount 25)[-1]
This is Line 25
Get-Content
コマンドはかっこで囲まれ、次の手順に進む前にコマンドが完了します。 行の配列を返 Get-Content
、かっこの後にインデックス表記を追加して、特定の行番号を取得できます。 この場合、[-1]
インデックスは、返された配列の最後のインデックスを 25 行指定します。
例 4: テキスト ファイルの最後の行を取得する
このコマンドは、ファイルからコンテンツの最後の行を取得します。 この例では、例 1 で作成した LineNumbers.txt
ファイルを使用します。
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 動的パラメーターがない場合、コンテンツは改行区切り文字列の配列として返されます。 この例では、例 1 で参照されている LineNumbers.txt
ファイルを使用します。
$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 パラメーターを修飾する場合は、パスの内容を示す末尾のアスタリスク (*
) を含める必要があります。
次のコマンドは、C:\Temp
ディレクトリ内のすべての *.log
ファイルの内容を取得します。
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を使用します。
型: | PSCredential |
配置: | Named |
規定値: | Current user |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Delimiter
ファイルを読み取り中 Get-Content
オブジェクトに分割するために使用する区切り記号を指定します。 既定値は、\n
行末文字です。 テキスト ファイルを読み取るとき、Get-Content
は文字列オブジェクトのコレクションを返します。それぞれの末尾は行末文字になります。 ファイルに存在しない区切り記号を入力すると、Get-Content
はファイル全体を 1 つの非制限オブジェクトとして返します。
このパラメーターを使用すると、区切り記号としてファイル区切り記号を指定することで、大きなファイルをより小さなファイルに分割できます。 区切り記号は保持され (破棄されません)、各ファイル セクションの最後の項目になります。
区切り記号 は、FileSystem プロバイダーが Get-Content
コマンドレットに追加する動的パラメーターです。 このパラメーターは、ファイル システム ドライブでのみ機能します。
手記
現在、Delimiter パラメーターの値が空の文字列の場合、Get-Content
は何も返しません。 これは既知の問題です。
Get-Content
がファイル全体を単一の非制限文字列として返すように強制する場合。 ファイルに存在しない値を入力します。
型: | String |
配置: | Named |
規定値: | End-of-line character |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Encoding
ターゲット ファイルのエンコードの種類を指定します。 既定値は Default
です。
このパラメーターに使用できる値は次のとおりです。
-
Ascii
ASCII (7 ビット) 文字セットを使用します。 -
BigEndianUnicode
ビッグ エンディアンバイト順で UTF-16 を使用します。 -
BigEndianUTF32
ビッグ エンディアンバイト順で UTF-32 を使用します。 -
Byte
一連の文字をバイト シーケンスにエンコードします。 -
Default
システムのアクティブなコード ページ (通常は ANSI) に対応するエンコードを使用します。 -
Oem
システムの現在の OEM コード ページに対応するエンコードを使用します。 -
String
Unicode
と同じです。 -
Unicode
リトル エンディアン バイト順で UTF-16 を使用します。 -
Unknown
Unicode
と同じです。 -
UTF7
UTF-7 を使用します。 -
UTF8
UTF-8 を使用します。 -
UTF32
は、リトル エンディアンバイト順で UTF-32 を使用します。
エンコードは、FileSystem プロバイダーが Get-Content
コマンドレットに追加する動的パラメーターです。
このパラメーターは、ファイル システム ドライブでのみ機能します。
バイナリ ファイルを読み取り、バイナリ ファイルに書き込む場合は、Encoding 動的パラメーターに Byte、ReadCount パラメーターに値 0 を使用します。
ReadCount 値 0 は、1 回の読み取り操作でファイル全体を読み取り、1 つのオブジェクト (PSObject) に変換します。 既定の ReadCount 値 1 は、各読み取り操作で 1 バイトを読み取り、各バイトを個別のオブジェクトに変換します。これにより、Set-Content
コマンドレットを使用してバイトをファイルに書き込むときにエラーが発生します。
型: | FileSystemCmdletProviderEncoding |
指定可能な値: | ASCII, BigEndianUnicode, BigEndianUTF32, Byte, Default, OEM, String, Unicode, Unknown, UTF7, UTF8, UTF32 |
配置: | Named |
規定値: | Default |
必須: | 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 は、読み取り専用属性をオーバーライドするか、ディレクトリを作成してファイル パスを完了できます。 Force パラメーターは、ファイルのアクセス許可の変更やセキュリティ制限のオーバーライドを試みません。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | 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 |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Path
Get-Content
がコンテンツを取得する項目へのパスを指定します。 ワイルドカード文字を使用できます。 パスは、コンテナーではなく、項目へのパスである必要があります。 たとえば、ディレクトリへのパスではなく、1 つ以上のファイルへのパスを指定する必要があります。
型: | String[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | True |
-Raw
改行文字を無視し、改行が保持されている 1 つの文字列内のファイルの内容全体を返します。 既定では、ファイル内の改行文字は、入力を文字列の配列に分割するための区切り記号として使用されます。 このパラメーターは PowerShell 3.0 で導入されました。
Raw は、FileSystem プロバイダーが Get-Content
コマンドレットに追加する動的パラメーターです。このパラメーターは、ファイル システム ドライブでのみ機能します。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-ReadCount
パイプラインを通じて一度に送信されるコンテンツの行数を指定します。 既定値は 1 です。 値が 0 (ゼロ) または負の数の場合、すべてのコンテンツが一度に送信されます。
このパラメーターは表示されるコンテンツを変更しませんが、コンテンツの表示にかかる時間には影響します。 ReadCount の値が大きくなると、最初の行を返すのにかかる時間は長くなりますが、操作の合計時間は減少します。 これにより、大きな項目で認識できる違いを生み出すことができます。
型: | Int64 |
配置: | Named |
規定値: | 1 |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Stream
指定した代替 NTFS ファイル ストリームの内容をファイルから取得します。 ストリーム名を入力します。 ワイルドカードはサポートされていません。
Stream は、FileSystem プロバイダーが Get-Content
コマンドレットに追加する動的パラメーターです。
このパラメーターは、Windows システム上のファイル システム ドライブでのみ機能します。
このパラメーターは、Windows PowerShell 3.0 で導入されました。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Tail
ファイルまたは他の項目の末尾からの行数を指定します。 Tail パラメーター名またはそのエイリアスを使用 Last。 負の値を指定すると、コマンドレットは内容全体を返します。
このパラメーターは PowerShell 3.0 で導入されました。
型: | Int32 |
Aliases: | Last |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-TotalCount
ファイルまたはその他の項目の先頭からの行数を指定します。 負の値を指定すると、コマンドレットは内容全体を返します。
TotalCount パラメーター名またはそのエイリアスを使用 、First または Headを使用できます。
型: | Int64 |
Aliases: | First, Head |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-UseTransaction
アクティブなトランザクションにコマンドを含みます。 このパラメーターは、トランザクションが進行中の場合にのみ有効です。 詳細については、about_Transactionsを参照してください。
型: | SwitchParameter |
Aliases: | usetx |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Wait
コマンドレットを無期限に待機させ、中断されるまでファイルを開いたままにします。 待機中に、Get-Content
は 1 秒に 1 回ファイルをチェックし、存在する場合は新しい行を出力します。
TotalCount パラメーターと共に使用する場合、Get-Content
は指定したファイルで指定した行数が使用可能になるまで待機します。 たとえば、TotalCount 10 を指定し、ファイルに既に 10 行以上ある場合、Get-Content
は 10 行を返し、終了します。 ファイルの行数が 10 行未満の場合、Get-Content
は到着するたびに各行を出力しますが、10 行目が到着するまで待機してから終了します。
Ctrl +Cキー押すと、待機 を中断できます。 ファイルを削除すると、終了しないエラーが発生し、待機も中断されます。
待機 は、FileSystem プロバイダーが Get-Content
コマンドレットに追加する動的パラメーターです。 このパラメーターは、ファイル システム ドライブでのみ機能します。
待機 を raw 組み合わせることはできません。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
このコマンドレットには、読み取りカウントまたは合計カウントをパイプできます。
String[]
このコマンドレットにパスをパイプできます。
資格情報をこのコマンドレットにパイプできます。
出力
AsByteStream パラメーターを使用すると、このコマンドレットはコンテンツをバイトとして返します。
既定では、このコマンドレットは、1 行に 1 つずつ、文字列の配列としてコンテンツを返します。 Raw パラメーターを使用すると、ファイル内のすべての行を含む 1 つの文字列が返されます。
メモ
Windows PowerShell には、Get-Content
の次のエイリアスが含まれています。
cat
gc
type
Get-Content
コマンドレットは、任意のプロバイダーによって公開されるデータを操作するように設計されています。 セッションでプロバイダーを取得するには、Get-PSProvider
コマンドレットを使用します。 詳細については、about_Providersを参照してください。
関連リンク
PowerShell