Get-Content コマンドレットの使用

テキスト ファイルの読み取り

Get-Content コマンドレットを使用して何ができるでしょうか。機能の 1 つに、テキスト ファイルのコンテンツを簡単に読んだり表示したりできることがあります。たとえば、次のコマンドを使用すると、ファイル C:\Scripts\Test.txt のコンテンツが表示されます。

Get-Content c:\scripts\test.txt

この結果を次に示します。

Windows PowerShell

これは刺激的だとは言いませんでしたよ。便利だと言ったのです。

では、どのように便利なのでしょうか。単純ですが効果的な例を紹介します。2 つ以上のコンピュータ名を含むテキスト ファイル (C:\Scripts\Test.txt) があるとします。この場合、WMI を使用して各コンピュータにインストールされている BIOS に関する情報を取得できます。次のように指定します。

Get-Content c:\scripts\test.txt | Foreach-Object {Get-Wmiobject -computername $_ win32_bios}

テキスト ファイルに 2 つのコンピュータしかない場合、次のような情報が返されます。

SMBIOSBIOSVersion : 68DTT Ver. F.0D
Manufacturer      : Hewlett-Packard
Name              : EPP runtime BIOS - Version 1.1
SerialNumber      : CND60723S7
Version           : HP     - 22110520

SMBIOSBIOSVersion : A03
Manufacturer      : Dell Computer Corporation
Name              : Phoenix ROM BIOS PLUS Version 1.10 A03
SerialNumber      : HTVNX41
Version           : DELL   - 7

よい質問です。このコマンドはどのように機能するのでしょうか。パイプラインの左側は分かりやすいでしょう。Get-Content を使用して、テキスト ファイルのコンテンツを読みます。それでは、パイプラインの右側に注目しましょう。

ForEach-Object {Get-Wmiobject -computername $_ win32_bios}

ここで行われている処理では、テキスト ファイル (またはコンピュータ名) のコンテンツを ForEach-Object コマンドレットに渡します。Get-Content は取得しているコンテンツに基づいて自動的に列を作成します。テキスト ファイルの場合、ファイルの各行は配列の 1 つのアイテムになります。ForEach-Object は、単純にファイルのコンテンツを同時に 1 行ずつ取得し、Get-WmiObject を呼び出し、Get-Wmiobject にファイルの別の行を指定して (既定のパイプライン変数 $_ を使用します)、すべての行が読み取られるまで繰り返します。次に Get-Wmiobject はコンピュータに接続し、Win32_BIOS クラスから情報を取得します。

混乱していますか。使用しているコンピュータ群で試して結果を確認してください。

Get-Content はファイルの各行から構成される配列を作成するため、多くの人が日常的に行っているよう作業、つまり Measure-Object コマンドレットを使用して、簡単にファイルの行数をカウントできます。

Get-Content c:\scripts\test.txt | Measure-Object

前述のコマンドで、次のようなデータが返されます。

Count    : 124
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

興味深い質問です。ファイルの最初の x 行のみを見たい場合ですね。この場合、単純に -totalcount パラメータに取得した行数を続けます。このコマンドで、ファイル Test.txt に最初の 5 行のみが返されます。

Get-Content c:\scripts\test.txt -totalcount 5

テキスト ファイルの最後の 5 行を取得するには、Get-Content を使用してファイルを使用し、最後の 5 アイテムを Select-Object で選択します。

Get-Content c:\scripts\test.txt | Select-Object -last 5
Get-Content のエイリアス
  • gc

  • type

  • cat

関連リンク