Measure the numeric or string properties of objects

      Measure-Object [ [-property] string[] ]  [-inputObject psobject]
         [-average] [-sum] [-minimum] [-maximum] [-StandardDeviation] [-AllStats]

      Measure-Object [ [-property] string[] ]  [-inputObject psobject]
         [-character] [-line] [-word] [-ignoreWhiteSpace]

   -property string[]
       The property to measure.

       Return all the statistics (average,sum,minimum,maximum,StandardDeviation) PowerShell 6+.

       Average the values in the designated property.

       Count the number of characters in the input object.

       The object(s) to be measured. 
       A command, expression or variable that contains the object(s).

       When the -InputObject parameter is used to submit a collection of items,
       Measure-Object receives one object that represents the collection.
       Because one collection object cannot be measured, Measure-Object returns the entire collection unchanged.

       To convert multiple items, pipe them to Measure-Object.

       This parameter is an implementation detail: its purpose is to enable input via the pipeline, and its
       direct use with arrays (collections) does not (yet) provide any useful functionality.

       Ignore white space in word counts and character counts.

       Count the number of lines in the input object.

       Determine the minimum value of the properties.

       Determine the maximum value of the properties.

       Determine the standard deviation of the properties. PowerShell 6+.

       Sum the values of the properties.

       Count the number of words in the input object.

Standard Aliases for Measure-Object: measure

In PowerShell 3.0 it is possible to measure Date/Time properties such as LastWriteTime of a file or StartTime of a process.

By default Measure-Object will return an array of several measurements, if you only want to return one, then pipe the output into
| Select-Object -expand item

Beginning in PowerShell 6, Measure-Object supports measurement of objects by using wildcards in property names.


Display the total size of the C:\Demo directory with all subfolders/files, -force incudes any hidden files, display in GB:

PS C:\> (get-childitem 'C:\demo' -force -recurse | measure Length -sum -ErrorAction SilentlyContinue).sum / 1Gb

Display the total size of the C:\Demo directory with all subfolders/files, rounded to 2 decimal places:

PS C:\> "{0:N2} GB" -f ((get-childitem 'C:\demo' -force -recurse | measure Length -sum -ErrorAction SilentlyContinue).sum / 1Gb)

Display the sum of all files in the current directory and return a single number:

PS C:\> get-childitem -force | measure-object -property length -sum -ErrorAction SilentlyContinue | Select-Object -expand sum

Count the number of files and folders in the current directory:

PS C:\> get-childitem -force | measure-object

Display the size of the largest and the size of the smallest file in the current directory:

PS C:\> get-childitem -force | measure-object -property length -minimum -maximum

Count the number of words in the file SS64.txt

PS C:\> get-content C:\SS64.txt | measure-object -word | Select-Object -expand words

Determine the standard deviation for the CPU used by all processes. A large deviation would indicate a small number of processes consuming the most CPU:

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

Determine the maximum of any type of paged memory usage among a set of processes (wildcards require PowerShell 6+).

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

“The advantage of living is not measured by length, but by use; some men have lived long, and lived little; attend to it while you are in it” ~ Michel Eyquem de Montaigne

Related PowerShell Cmdlets

Compare-Object - Compare the properties of objects.
Get-ChildItem - Get child items.
ForEach-Object - Loop for each object in the pipeline.
Group-Object - Group the objects that contain the same value for a common property.
New-Object - Create a new .Net object.
Select-Object - Select objects based on parameters set in the Cmdlet command string.
Sort-Object - Sort the input objects by property value.
Tee-Object - Send input objects to two places.
Where-Object - Filter input from the pipeline allowing operation on only certain objects.
Equivalent bash command: expr - Evaluate expressions.

Copyright © 1999-2023
Some rights reserved