第9章. シンプルなファイル
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
9.0 はじめに
システムを管理する場合、当然ながらそのシステム上のファイルを扱うのにかなりの時間を費やすことになる。ファイルの内容を取得したり、パターンを検索したり、ファイル内のテキストを置き換えたりするのだ。
このような単純な演算子であっても、PowerShellのオブジェクト指向は、いくつかのユニークで強力な工夫を加えている。
9.1 ファイルの内容を取得する
問題
ファイルの内容を取得したい。
解決策
Get-Content コマンドレットの引数として、 ファイル名を指定する:
PS > $content = Get-Content c:\temp\file.txt
コマンドレットGet-Content の変数構文を使うには、 ファイル名を${} セクションに置く:
PS > $content = ${c:\temp\file.txt}
.NET FrameworkのSystem.IO.File クラスを使用するには、ReadAllLines() またはReadAllText() メソッドの引数に 、ファイル名を指定する:
PS > $content = Get-Content c:\temp\file.txt -Raw
PS > $contentLines = [System.IO.File]::ReadAllLines("c:\temp\file.txt")
ディスカッション
PowerShellは、ファイルの内容を取得する3つの主要な方法を提供している。1つ目は、Get-Content コマンドレットで、この目的のために設計されたコマンドレットだ。実際には、Get-Content コマンドレットは、コンテンツを持つアイテムの概念をサポートする PowerShell ドライブで動作する。これには、Alias: 、Function: などが含まれる。2番目と3番目のメソッドは、Get-Content 変数構文とReadAllText() メソッドである。
ファイルに対して作業するとき、Get-Content コマンドレットはファイルの内容を一行ずつ返す。その際、PowerShellはその出力行に関する追加情報を提供する。PowerShell が各出力行にプロパティとして付加するこの情報には、その行が発生したドライブとパスなどが含まれる。
注
PowerShellに(デフォルトの改行ではなく)選択した文字列に基づいてファイル内容を分割させたい場合は、Get-Content コマンドレットの-Delimiter パラメータで指定できる。
は便利だが、PowerShell がこの余分な情報を使用していないときに添付することは、大きなファイルを演算子するスクリプトの速度を低下させることがある。大きなファイルをより迅速に処理する必要がある場合、Get-Content コマンドレットのReadCount パラメータを使用すると、PowerShell がファイルから一度に読み取る行数を制御できる。ReadCount が 1(デフォルト)の場合、PowerShell は各行を 1 行ずつ返す。ReadCount が 2 の場合、PowerShell は一度に 2 行を返す。ReadCount が 1 未満の場合、PowerShell はファイルからすべての行を一度に返す。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access