オブジェクトの数値的なプロパティ、例えば文字、単語、および文字列オブジェクト内の行の計算や数え上げは、イライラすることがあります。幸いなことに、Measure-Object
コマンドレットはそのタスクに対応しています。
このチュートリアルでは、Measure-Object
コマンドレットの強力さを学び、PowerShellでオブジェクトのプロパティを計測する自動化の方法を理解します。
さっそく始めて、オブジェクトの計測スキルを向上させましょう!
前提条件
このチュートリアルは実演形式です。一緒に進むには、PowerShellがインストールされたシステムが必要です。このチュートリアルでは、PowerShell v7を搭載したWindows 10が使用されています。
ファイルとフォルダの数を数える
ディレクトリ内のファイルとフォルダの数を知ることは、さまざまなシナリオで役立ちます。例えば、フォルダのサイズを監視したり、ディレクトリ内のファイルの数を確認する必要がある場合があります。
Measure-Object
コマンドレットはディレクトリ内のファイルとフォルダの数を数えます。正確な数は、システムリソースをより良く管理し最適化するのに役立ちます。
Measure-Object
コマンドレットがファイルとフォルダの数を数える方法を確認するには:
1. PowerShellを開き、次のGet-ChildItem
コマンドを実行して、現在のディレクトリ内の合計ファイル数およびフォルダ数を返します(Measure-Object
)。
以下の出力は、現在のディレクトリ内に4852個のファイルとフォルダがあることを示しています。

おそらく、ディレクトリツリー全体にあるすべてのファイルとサブディレクトリを含めたい場合は、
-Recurse
パラメータを追加してください。以下に示すように。Get-ChildItem -Recurse | Measure-Object
2. 次に、ステップ1で行ったのと同じコマンドを実行します。ただし、今回は-Directory
パラメータを追加して、作業ディレクトリ内の合計ディレクトリのみを数えます。
以下のように、合計数は(135)になり、コマンドはディレクトリのみを数えて、他のすべてのオブジェクトを除外しています。

3. 次に、現在のディレクトリ内の実行可能ファイル(.exe
)の数をカウントする以下のコマンドを実行してください。
-Filter
パラメーターは、Get-ChildItem
コマンドレットに結果をフィルタリングして、指定した拡張子(つまり、*.txt
、*.jpg
、*.csv
)のファイルのみを返すように指示します。

ファイルサイズの測定
オブジェクトの長さとサイズを測定することは、大きなファイルがシステムのパフォーマンスに影響を与えるため、システムをより効果的に管理するのに役立ちます。プロパティを数えるだけでなく、Measure-Object
コマンドレットを使用して、オブジェクトの長さとサイズも測定できます。
以下のコードを実行して、現在のディレクトリ内のすべてのファイル(Get-ChildItem
)を取得し、デフォルトでバイト単位の長さを表示します(Write-Host
)。
以下のコードは、最小ファイルサイズ、最大ファイルサイズ、平均ファイルサイズ、ファイルサイズの合計、およびファイルの総数を含む、各測定値をコンソールに出力します。
以下は、バイト単位で表示されたサイズです。

おそらくコンソールにコードを貼り付けるのは得意ではないかもしれません。その場合は、コードをPowerShellスクリプトファイルに保存して実行してください。
次に、次のコマンドを実行して、現在のディレクトリにあるファイルを取得し、そのサイズ($_.Length
)が最大ファイルサイズ($files.Maximum
)と等しいかどうかを確認します。
以下の出力は、現在のディレクトリにある最も大きなファイルの名前を示しています。

テキストファイルの内容の測定
ファイルサイズを測定する代わりに、テキストファイルの行数、単語数、または文字数を決定する必要があるかもしれません。その場合、Measure-Object
コマンドレットにはテキストファイルの内容を測定するための他の多くのパラメータがあります。
以下のコードを実行して、テキストファイルの内容を-Character
、-Line
、-Word
で測定し、測定値をWrite-Host
で出力します。

ブール値の測定
ブール値はtrueまたはfalseのみの値です。PowerShellでは、ブール値はスクリプトのフローを制御したり、条件を判断したり(trueまたはfalse)、コマンドの成功または失敗を示したりするためによく使用されます。
ブール値を測定することは、次のようなさまざまなシナリオで役立ちます:
- データセット内のtrueまたはfalse値の数を数える。
- 全体の値の中でtrue値の割合を決定する。
この情報は、データの処理や分析において健全な判断を下すのに役立ちます。
ブール値の測定方法を確認するには:
以下のコマンドを実行して、配列($values
)内の真偽値の合計をカウントします。
以下、真偽値の合計は9(9)であり、Sumは5(5)です。なぜなら、真の値だけがカウントされるからです。
偽の値はどうですか?次の手順に進み、さらにいくつかのコマンドを実行してください。

次に、下記のコードを実行して、真の値の合計($trueCount
)を全体の真偽値のカウント($count
)から引きます。式からの差分は、偽の値の合計($falseCount
)です。

もしブール値の計測が日常のタスクであるなら、いつでも呼び出せる関数を作成することができます。
ハッシュテーブルの計測
PowerShellのハッシュテーブル(キーと値のペアのコレクション)は、データの迅速かつ効率的な格納と取得を可能にします。ハッシュテーブル内のアイテム数や最大値、最小値が必要な場合は、Measure-Object
コマンドレットにハッシュテーブルの計測を任せましょう。
以下のコマンドを実行して、ハッシュテーブル($MyHastable
)のNum
プロパティの-Minimum
値と-Maximum
値を見つけましょう。

標準偏差の計測
データセットのレビューは長々としていることがありますが、必ずしもそうである必要はありません。標準偏差を測定することは、データセットの値の分布を理解する際に便利です。また、結果に影響を与える外れ値や異常なデータポイントを特定することもできます。
標準偏差は、データセットの値の平均(平均値)からのばらつきや分散を測定するものです。この測定は、データの分散の平均である分散の平方根を求めることによって計算されます。
以下のコードを実行して、$Numbers
変数に格納された数値配列の-Average
と-StandardDeviation
を計算し、表示します。
統計学では、平均は中心傾向を測定し、データセットの典型的なまたは最も代表的な値を説明します。
平均は、データセット内のすべての数値を合計して、総数で割ることによって計算されます。この例では、データセットは{10
、20
、30
、40
、50
}であり、合計は150で、セット内には5つの数値(5
)が含まれています。
したがって、以下に平均が計算されます。30
。
一方、標準偏差は、データセットの散らばりやばらつきを測定します。標準偏差は以下のように計算されます。

結論
計測データは重要なタスクであり、PowerShellの`Measure-Object`コマンドレットはそのタスクを完了するための強力なツールです。このチュートリアルでは、さまざまな方法でデータを計測する方法を学びました。ファイル、テキストファイルの内容、ブール値、文字列、配列、またはハッシュテーブルを扱っている場合でも、それらを計測することで有益な洞察を得ることができます。
これで、データの平均値、最大値、最小値を簡単に計算し、データの変動や拡がりを測定することができます。これらの機能を使用すると、データをより深く理解し、分析に基づいて的確な判断を行うことができます。
この新たな知識を活用して、なぜPowerShellツールキットを拡張して、`Compare-Object`を武器に加えないのでしょうか?
Source:
https://adamtheautomator.com/powershell-measure-object/