Creates a filter that controls which objects will be passed along a command pipeline.

Syntax

  Copy Code
Where-Object [-FilterScript] <scriptblock> [-InputObject <psobject>] [<CommonParameters>]

Description

The Where-Object cmdlet selects objects from the set of objects that are passed to it. It uses a script block as a filter and evaluates the script block for each object. If the result of the evaluation is True, the object is returned. If the result of the evaluation is not True, the object is ignored.

Parameters

-FilterScript <scriptblock>

Specifies the script block that is used to filter the objects. Enclose the script block in braces ( {} ).

Required?

true

Position?

1

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-InputObject <psobject>

Specifies the objects to be filtered. You can also pipe the objects to Where-Object.

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

true (ByValue)

Accept Wildcard Characters?

false

<CommonParameters>

This command supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, OutBuffer, OutVariable, WarningAction, and WarningVariable. For more information, see about_CommonParameters.

Inputs and Outputs

The input type is the type of the objects that you can pipe to the cmdlet. The return type is the type of the objects that the cmdlet returns.

Inputs

System.Management.Automation.PSObject

You can pipe the objects to be filtered to Where-Object.

Outputs

Example 1

  Copy Code
C:\PS>get-service | where-object {$_.Status -eq "Stopped"}

Description

-----------

This command gets a list of all services that are currently stopped. The "$" symbol represents each object that is passed to the Where-Object cmdlet.

Example 2

  Copy Code
C:\PS>get-process | where-object {$_.workingset -gt 25000*1024}

Description

-----------

This command lists processes that have a working set greater than 25,000 kilobytes (KB). Because the value of the WorkingSet property is stored in bytes, the value of 25,000 is multiplied by 1,024.

Example 3

  Copy Code
C:\PS>get-process | where-object { $_.ProcessName -match "^p.*" }

Description

-----------

This command gets the processes with a ProcessName property that begins with the letter "p". The match operator enables you to use regular expressions within a Where clause.

Example 4

  Copy Code
C:\PS>get-process -name svchost | where-object {$True}

Description

-----------

This command lists all of the processes named "svchost".

The Where-Object cmdlet evaluates the script block, which typically includes a reference to the object currently in the pipeline ($_), and casts the results to a Boolean type: True or False. If the result is True, the object is returned. Otherwise, it is discarded.

In this case, the script block just returns True, so all the objects are returned.