#PSTip List all cmdlets that accept a specific object type as input

Note: This tip requires PowerShell 3.0 or above.

At times, we find the need to list all cmdlets that accept a specific type of object as input. In PowerShell 3.0, the –ParameterType parameter of the Get-Command cmdlet can be used to retrieve this list.

PS> Get-Help Get-Command -Parameter ParameterType
-ParameterType
Gets commands in the session that have parameters of the specified type. Enter the full name or partial name of a parameter type. Wildcards are supported.

The ParameterName and ParameterType parameters search only commands in the current session.
This parameter is introduced in Windows PowerShell 3.0.

As mentioned in the help text, the value of this parameter can be the full PS type name:

Get-Command -ParameterType System.Diagnostics.Process

Or we can use wildcards as well – in case we don’t know the full type name:

Get-Command -ParameterType *uri*

Or we can pass the PSTypeNames property of an object and derive the cmdlets that support the object type as input:

PS> Get-Command -ParameterType (((Get-Process)[0]).PSTypeNames)
CommandType     Name                                               ModuleName
-----------     ----                                               ----------
Cmdlet          Debug-Process                                      Microsoft.PowerShell.Management
Cmdlet          Get-Process                                        Microsoft.PowerShell.Management
Cmdlet          Stop-Process                                       Microsoft.PowerShell.Management
Cmdlet          Wait-Process                                       Microsoft.PowerShell.Management
Share on: