次の方法で共有


Measure-Object

オブジェクトの数値プロパティと、文字列オブジェクト内の文字、単語、行 (テキストのファイルなど) を計算します。

構文

Measure-Object
       [[-Property] <PSPropertyExpression[]>]
       [-InputObject <PSObject>]
       [-StandardDeviation]
       [-Sum]
       [-AllStats]
       [-Average]
       [-Maximum]
       [-Minimum]
       [<CommonParameters>]
Measure-Object
       [[-Property] <PSPropertyExpression[]>]
       [-InputObject <PSObject>]
       [-Line]
       [-Word]
       [-Character]
       [-IgnoreWhiteSpace]
       [<CommonParameters>]

説明

Measure-Object コマンドレットは、特定の種類のオブジェクトのプロパティ値を計算します。 Measure-Object では、コマンドのパラメーターに応じて、3 種類の測定が実行されます。

Measure-Object コマンドレットは、オブジェクトのプロパティ値に対して計算を実行します。 Measure-Object を使用すると、指定した Propertyでオブジェクトをカウントしたり、オブジェクトをカウントしたりできます。 Measure-Object を使用して、最小最大合計StandardDeviation、および数値の 平均 を計算することもできます。 文字列 オブジェクト の場合は、 を使用して行、単語、および文字の数をカウントすることもできます。

例 1: ディレクトリ内のファイルとフォルダーをカウントする

このコマンドは、現在のディレクトリ内のファイルとフォルダーをカウントします。

Get-ChildItem | Measure-Object

例 2: ディレクトリ内のファイルを測定する

このコマンドは、最小最大、および 現在のディレクトリ内のすべてのファイルのサイズの合計、およびディレクトリ内のファイルの平均サイズを表示します。

Get-ChildItem | Measure-Object -Property length -Minimum -Maximum -Sum -Average

例 3: テキスト ファイル内のテキストを測定する

このコマンドは、Text.txt ファイル内の文字数、単語、および行数を表示します。 Raw パラメーターを指定しない場合、Get-Content はファイルを行の配列として出力します。

最初のコマンドでは、Set-Content を使用して既定のテキストをファイルに追加します。

"One", "Two", "Three", "Four" | Set-Content -Path C:\Temp\tmp.txt
Get-Content C:\Temp\tmp.txt | Measure-Object -Character -Line -Word

Lines Words Characters Property
----- ----- ---------- --------
    4     4         15

例 4: 指定したプロパティを含むオブジェクトを測定する

次の使用例は、DisplayName プロパティを持つオブジェクトの数をカウントします。 最初の 2 つのコマンドは、ローカル コンピューター上のすべてのサービスとプロセスを取得します。 3 番目のコマンドは、サービスとプロセスの組み合わせ数をカウントします。 最後のコマンドは、2 つのコレクションを結合し、結果をパイプして Measure-Objectします。

System.Diagnostics.Process オブジェクトには、DisplayName プロパティがないため、最終的なカウントは省略されます。

$services = Get-Service
$processes = Get-Process
$services + $processes | Measure-Object
$services + $processes | Measure-Object -Property DisplayName

Count    : 682
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

Count    : 290
Average  :
Sum      :
Maximum  :
Minimum  :
Property : DisplayName

例 5: CSV ファイルの内容を測定する

このコマンドは、会社の従業員の平均勤続年数を計算します。

ServiceYrs.csv ファイルは、各従業員の従業員数とサービス年数を含む CSV ファイルです。 テーブルの最初の行は、EmpNoYearsのヘッダー行です。

Import-Csv を使用してファイルをインポートすると、結果は PSCustomObject になり、EmpNoYearsのメモ プロパティが表示されます。 Measure-Object を使用すると、オブジェクトの他のプロパティと同様に、これらのプロパティの値を計算できます。

Import-Csv d:\test\serviceyrs.csv | Measure-Object -Property years -Minimum -Maximum -Average

例 6: ブール値を測定する

この例では、Measure-Object でブール値を測定する方法を示します。 この場合、PSIsContainerBoolean プロパティを使用して、現在のディレクトリ内のフォルダー (ファイル) の発生率を測定します。

Get-ChildItem | Measure-Object -Property psiscontainer -Maximum -Sum -Minimum -Average

Count             : 126
Average           : 0.0634920634920635
Sum               : 8
Maximum           : 1
Minimum           : 0
StandardDeviation :
Property          : PSIsContainer

例 7: 文字列を測定する

次の例では、行数を測定し、最初に 1 つの文字列を、次に複数の文字列にわたって測定します。 改行文字 `n 文字列を複数行に分割します。

# The newline character `n separates the string into separate lines, as shown in the output.
"One`nTwo`nThree"
"One`nTwo`nThree" | Measure-Object -Line

One
Two
Three


Lines Words Characters Property
----- ----- ---------- --------
    3

# The first string counts as a single line.
# The second string is separated into two lines by the newline character.
"One", "Two`nThree" | Measure-Object -Line

Lines Words Characters Property
----- ----- ---------- --------
    3

# The Word switch counts the number of words in each InputObject
# Each InputObject is treated as a single line.
"One, Two", "Three", "Four Five" | Measure-Object -Word -Line

Lines Words Characters Property
----- ----- ---------- --------
    3     5

例 8: すべての値を測定する

PowerShell 6 以降では、Measure-ObjectAllStats パラメーターを使用すると、すべての統計情報をまとめて測定できます。

1..5 | Measure-Object -AllStats

Count             : 5
Average           : 3
Sum               : 15
Maximum           : 5
Minimum           : 1
StandardDeviation : 1.58113883008419
Property          :

例 9: scriptblock プロパティを使用して測定する

PowerShell 6 以降では、 は ScriptBlock プロパティ サポートしています。 次の例では、ScriptBlock プロパティを使用して、ディレクトリ内のすべてのファイルのサイズ (MegaBytes) を決定する方法を示します。

Get-ChildItem | Measure-Object -Sum {$_.Length/1MB}

例 10: ハッシュテーブルを測定する

PowerShell 6 以降、 では、ハッシュテーブル 入力 測定がサポートされています。 次の例では、3 ハッシュテーブル オブジェクトの num キーの最大値を決定します。

@{num=3}, @{num=4}, @{num=5} | Measure-Object -Maximum Num

Count             : 3
Average           :
Sum               :
Maximum           : 5
Minimum           :
StandardDeviation :
Property          : num

例 11: 標準偏差を測定する

PowerShell 6 以降では、Measure-Object-StandardDeviation パラメーターをサポートしています。 次の例では、すべてのプロセスで使用される CPU の 標準偏差 を決定します。 大きな偏差は、ほとんどの CPU を消費するプロセスの数が少ないことを示します。

Get-Process | Measure-Object -Average -StandardDeviation CPU

Count             : 303
Average           : 163.032384488449
Sum               :
Maximum           :
Minimum           :
StandardDeviation : 859.444048419069
Property          : CPU

例 12: ワイルドカードを使用して測定する

PowerShell 6 以降、Measure-Object では、プロパティ名にワイルドカードを使用したオブジェクトの測定がサポートされています。 次の例では、一連のプロセスでページングされたメモリ使用量の最大量を決定します。

Get-Process | Measure-Object -Maximum *paged*memory*size

Count             : 303
Average           :
Sum               :
Maximum           : 735784
Minimum           :
StandardDeviation :
Property          : NonpagedSystemMemorySize

Count             : 303
Average           :
Sum               :
Maximum           : 352104448
Minimum           :
StandardDeviation :
Property          : PagedMemorySize

Count             : 303
Average           :
Sum               :
Maximum           : 2201968
Minimum           :
StandardDeviation :
Property          : PagedSystemMemorySize

Count             : 303
Average           :
Sum               :
Maximum           : 719032320
Minimum           :
StandardDeviation :
Property          : PeakPagedMemorySize

パラメーター

-AllStats

指定したプロパティのすべての統計情報がコマンドレットに表示されることを示します。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Average

指定したプロパティの平均値がコマンドレットに表示されることを示します。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Character

コマンドレットが入力オブジェクトの文字数をカウントすることを示します。

手記

WordChar、および Line スイッチは、各入力オブジェクト内 数と、 入力オブジェクト間の を切り替えます。 例 7 を参照してください。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-IgnoreWhiteSpace

コマンドレットが文字数の空白を無視することを示します。 既定では、空白は無視されません。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-InputObject

測定するオブジェクトを指定します。 オブジェクトを含む変数を入力するか、オブジェクトを取得するコマンドまたは式を入力します。

InputObject パラメーターを Measure-Objectと共に使用すると、コマンドの結果をパイプ処理して Measure-Objectする代わりに、InputObject 値は 1 つのオブジェクトとして扱われます。

定義されたプロパティでオブジェクトに特定の値が含まれているかどうかに基づいてオブジェクトのコレクションを測定する場合は、パイプラインで Measure-Object を使用することをお勧めします。

型:PSObject
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-Line

コマンドレットが入力オブジェクトの行数をカウントすることを示します。

手記

WordChar、および Line スイッチは、各入力オブジェクト内 数と、 入力オブジェクト間の を切り替えます。 例 7 を参照してください。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Maximum

指定したプロパティの最大値がコマンドレットに表示されることを示します。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Minimum

指定したプロパティの最小値がコマンドレットに表示されることを示します。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Property

測定する 1 つ以上のプロパティを指定します。 他のメジャーを指定しない場合、Measure-Object は、指定したプロパティを持つオブジェクトをカウントします。

Property パラメーターの値には、新しい計算プロパティを指定できます。 計算プロパティはスクリプト ブロックである必要があります。 詳細については、about_Calculated_Propertiesを参照してください。

型:PSPropertyExpression[]
配置:0
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:True

-StandardDeviation

指定したプロパティの値の標準偏差がコマンドレットに表示されることを示します。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Sum

指定したプロパティの値の合計がコマンドレットに表示されることを示します。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Word

コマンドレットが入力オブジェクト内の単語数をカウントすることを示します。

手記

WordChar、および Line スイッチは、各入力オブジェクト内 数と、 入力オブジェクト間の を切り替えます。 例 7 を参照してください。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

PSObject

このコマンドレットにオブジェクトをパイプできます。

出力

GenericMeasureInfo

既定では、このコマンドレットは GenericMeasureInfo オブジェクトを返します。

TextMeasureInfo

Word パラメーターを使用すると、このコマンドレットは TextMeasureInfo オブジェクトを返します。

メモ

PowerShell には、Measure-Objectの次のエイリアスが含まれています。

  • すべてのプラットフォーム:
    • measure

PowerShell 7.3 以降では、 StrictModeで実行している場合を除き、測定対象のプロパティがないオブジェクトを処理するときにエラー 返されなくなりました。 StrictModeでは、Measure-Object は、指定したプロパティがないオブジェクトを処理するときに System.Management.Automation.PSArgumentException を返します。