Tuesday, October 14, 2008
コマンドレット名


Get-Content

エイリアス


gc
cat
type


説明


-path または -literalPath パラメータに指定した項目の内容を読み取ります。
一度に1行の内容を読み込み、それぞれの行オブジェクトを返します。

書式


Get-Content [-path] <string[]>または[-literalPath] <string[]> [-totalCount] <long[]> [-readCount] <long[]> [-include <string[]>] [-exclude <string[]>] [-filter <string>] [-force] [-credential <PSCredential>] [-encoding] { <Unknown> | <String> | <Unicode> <Byte> | <BigEndianUnicode> <UTF8> | <UTF7> | <Ascii> |} [<CommonParameters>]

パラメータ
-path <string[]>


読み込みを行う項目のパスを指定します。パスにはワイルドカードを指定することができます。またカンマで区切ることで複数の項目を1度に読み込むことができます。


各サンプルで使用しているファイルは「サンプルで使用するテキストファイル」を参照ください


–––––––––– -Path パラメータの使用例1 ––––––––––


PS > PS C:\Work> Get-Content -Path "Test1.txt"
ABC
DEF
GHI


このコマンドを実行すると Test1.txt の内容を読み込んで表示します。


–––––––––– -Path パラメータの使用例2 ––––––––––


PS > PS C:\Work> Get-Content -Path "Test1.txt","Test2.txt"
ABC
DEF
GHI
JKL


このコマンドを実行すると Test1.txt と Test2.txt の内容を読み込んで表示します。
このように複数のファイルを一度に読み込んだ場合にはファイルの内容が連結された状態で表示されますので、どこまでがどのファイルの内容なのかを判断することはできませんので注意が必要です。


–––––––––– -Path パラメータの使用例3 ––––––––––


PS C:\Work> Get-Content -Path "Test*.txt"
ABC
DEF
GHI
JKL
ABC
DEF
GHI
SAMPLE1


このコマンドを実行すると、C:\Work内にある ファイル名の先頭が "Test" 拡張子が "txt"のファイルすべてを読み込んで表示します。
ただし、-Pathパラメータはエスケープ文字を含むファイルを取り扱うことはできないため、"Test`t.txt" のようなフィル名のデータは読み込むことができません。この場合は-literalPathパラメータを使用します。
この例では C:\Work 内に Test1.txt, Test2.txt, Test`t.txt, Test[1].txt のファイルを準備して実行したのですが"Test1.txt"のファイルが2度読み込まれるという現象が発生しています。
これは、フォルダ内に Test[1].txt というファイルが存在するため、このファイル名が-Pathパラメータに渡されたのが原因です。このことからワイルドカードを使用した読み込みには注意が必要です。


–––––––––– -Path パラメータの使用例4 ––––––––––


PS > PS C:\Work> Get-Content -Path "Test[1].txt"
ABC
DEF
GHI


このコマンドを実行すると Test1.txt の内容を読み込んで表示します。これは"Test[1].txt"の"[]"がワイルドカードとして認識されたためです。
ファイル名が"Test[1].txt"というファイルの読み込みを行う場合は-literalPath パラメータを使用します。


–––––––––– -Path パラメータの使用例5 ––––––––––


PS C:\Work> Get-Content -Path 'Test`t.txt'
SAMPLE1


このコマンドを実行すると、エスケープ文字列を含むファイル"Test`t.txt"の内容を読み込んで表示します。
エスケープ文字列を含むファイルを読み込む場合は、指定するパスを一重引用符で括る必要がありますので注意してください。(二重引用符で括った場合はエラーとなります)


-literalPath <string[]>


読み込みを行う項目のパスを指定します。-Pathパラメータと違ってパスにはワイルドカードを指定することができません。その代わり、
エスケープ文字を含むパスを指定することが可能です。エスケープ文字を含むパスを指定する場合は -literalPath パラメータを使用します。(PowerShellでは`(アクサングラーブ文字)がエスケープ文字として扱われます。)


–––––––––– -literalPath パラメータの使用例1 ––––––––––


PS > PS C:\Work> Get-Content -literalPath "Test1.txt"
ABC
DEF
GHI


このコマンドを実行すると Test1.txt の内容を読み込んで表示します。


–––––––––– -literalPath パラメータの使用例2 ––––––––––


PS > PS C:\Work> Get-Content -literalPath "Test1.txt","Test2.txt"
ABC
DEF
GHI
JKL


このコマンドを実行すると Test1.txt と Test2.txt の内容を読み込んで表示します。
このように複数のファイルを一度に読み込んだ場合にはファイルの内容が連結された状態で表示されますので、どこまでがどのファイルの内容なのかを判断することはできませんので注意が必要です。


–––––––––– -literalPath パラメータの使用例3 ––––––––––


PS C:\Work> Get-Content -literalPath 'Test`t.txt'
SAMPLE1


このコマンドを実行すると、エスケープ文字列を含むファイル"Test`t.txt"の内容を読み込んで表示します。
エスケープ文字列を含むファイルを読み込む場合は、指定するパスを一重引用符で括る必要がありますので注意してください。(二重引用符で括った場合はエラーとなります)


–––––––––– -literalPath パラメータの使用例4 ––––––––––


PS > PS C:\Work> Get-Content -literalPath "Test[1].txt"
SAMPLE1


このコマンドを実行すると Test[1].txt の内容を読み込んで表示します。これは"Test[1].txt"の"[]"がワイルドカードとして認識されずにファイル名の一部として認識されたためです。
"[]"をワイルドカードとして取り扱うには-Path パラメータを使用します。


-totalCount <long>


内容を何行読み込むかを指定します。規定値は-1となっており、すべての行を読み込みます。


–––––––––– -totalCount パラメータの使用例1 ––––––––––


PS C:\Work> Get-Content -Path "Test1.txt" -TotalCount 1
ABC


このコマンドを実行すると、Test1.txtファイルの内容を1行だけ読み込んで表示します。
-readCount <long>


パイプライン経由で一度に遅れる行数を指定します。規定値は0ですべての行を送ります。

ReadCount の値を大きくすると、最初の行を返すまでの時間は長くなりますが、処理全体の時間が短くなります。


–––––––––– -readCount パラメータの使用例1 ––––––––––


PS C:\Work> Get-Content -Path "Test1.txt" -ReadCount 1 | %{Write-Host $_}
ABC
DEF
GHI


このコマンドを実行すると、Test1.txtファイルの内容を1行ずつパイプライン経由で送り、コンソールへ出力します。


–––––––––– -readCount パラメータの使用例2 ––––––––––


PS C:\Work> Get-Content -Path "Test1.txt" -ReadCount 2 | %{Write-Host $_}
ABC DEF
GHI


このコマンドを実行すると、Test1.txtファイルの内容を2行ずつパイプライン経由で送り、コンソールへ出力します。
2行ずつ渡すので、受け取ったデータは2行分を1度に表示します。


-include <string[]>


-includeパラメータは、-pathパラメータで指定した項目の中から、対象を絞り込みます。
"*.txt"などパス要素やパターンを指定します。


–––––––––– -include パラメータの使用例1 ––––––––––


PS > Get-Content -Path "*.txt" -Include "Test1*.txt"


このコマンドレットは、-pathパラメータで指定した拡張子"*.txt"の中でも特に"Test1*.txt"のファイルを読み込みます。


-exclude <string[]>


-excludeパラメータは、-pathパラメータで指定した項目の中から、項目を除外します。
"*.txt"などパス要素やパターンを指定します。


–––––––––– -exclude パラメータの使用例1 ––––––––––


PS > Get-Content -Path "*.txt" -Exclude "Test1*.txt"


このコマンドレットは、-pathパラメータで指定した拡張子"*.txt"の中でも特に"Test1*.txt"以外のファイルを読み込みます。


-filter <string>


PS > Get-Content -Path "*.txt" -filter "test*.txt"


このコマンドレットは-includeパラメータ同様、-filterパラメータによって対象となるファイルを"test*.txt"に限定します。
-filterパラメータは、ほかのパラメータよりも効率がよいとされています。これは-includeパラメータや-excludeパラメータは、オブジェクト取得後にフィルタをするのですが、-filterパラメータは取得する時点でフィルタをかけるためです。


-encoding


読み込みに使用するエンコードを指定します。使用可能な文字エンコードの種類は Unknown, String, Unicode, Byte, BigEndianUnicode, UTF8, UTF7, Ascii です。


Get-Content -Path Test1.txt -Encoding "UTF8"


このコマンドは Test1.txt を UTF8で読み込みます。


サンプルで使用するテキストファイル


使用例で使っているファイルは下記の通りで、C:\Workというフォルダに保存してあるものとします。


Test1.txt
ABC
DEF
GHI


Test2.txt
JKL


Test`t.txt
SAMPLE1


Test[1].txt
SAMPLE2
Tuesday, October 14, 2008 10:39:49 PM (Tokyo Standard Time, UTC+09:00)  #    Comments [0]  |  Trackback
Comments are closed.

Theme design by Jelle Druyts

Pick a theme: