Happy New Year!
Ok, that is a bit late. I'm getting around to catching up on some questions from my classes last year. Here is a good one.
What Will a Cmdlet Accept Through the PowerShell Pipeline? Well, that is a good question. How a object is piped from one cmdlet to
another is a touchy subject in my PowerShell classes. This extremely powerful feature needs to be
used, but the research that goes into it for new PowerShell developers can be a
bit complex. To help out, I built a
cmdlet to read the help files of a cmdlet or script and determine what
parameters accept pipeline input ByValue or ByPropertyName and what data type they
require. All of these are required to
help the developer understand if they can pipe their objects to a cmdlet.
Here you go! Have fun with it.
Function Get-PipelineInfo
{
[CmdletBinding()]
Param (
[String]
$Cmdlet
)
Write-Verbose "Pipeline
informaiton for $Cmdlet."
(Get-Help $Cmdlet).Parameters.Parameter
|
Where-Object
PipelineInput -ne
"False" |
Select-Object
-Property Name
,
@{N =
"ByValue" ; E = { If ($_.PipelineInput
-Like "*ByValue*")
{$True}
Else {$False}
}},
@{N =
"ByPropertyName" ; E = { If ($_.PipelineInput
-Like "*ByPropertyName*")
{$True}
Else {$False}
}},
@{N =
"Type"; E =
{$_.Type.Name}}
<#
.SYNOPSIS
Gets the pipeline information for cmdlets.
.DESCRIPTION
Reads the help files of PowerShell scripts and cmdlets and
extracts the
information on all parameters that accept information from the
PowerShell
pipeline.
.PARAMETER Cmdlet
The cmdlet you want to get pipeline information on.
.EXAMPLE
Get-PipelineInfo -Cmdlet 'Get-Process'
name
pipelineInput Type Cmdlet
----
------------- ---- ------
ComputerName True (ByPropertyName) String[] Get-Process
Id True
(ByPropertyName) Int32[] Get-Process
InputObject True
(ByValue) Process[] Get-Process
Name True
(ByPropertyName) String[] Get-Process
.NOTES
===============================================================================
== Cmdlet: Get-PipelineInfo ==
== Author: Jason A. Yoder
==
== Company: MCTExpert of Arizona ==
== Date: January 15, 2019
==
== Copyright: All rights reserved. ==
== Version: 1.0.0.0
==
== Legal: The user assumes all responsibility and liability
for the usage of ==
== this PowerShell code.
MCTExpert of Arizona, Its officers, shareholders, ==
== owners, and their relatives are not liable for any
damages. As with all ==
== code, review it and understand it prior to usage. It is recommended that ==
== this code be fully tested and validated in a test
environment prior to ==
== usage in a production environment. ==
== ==
== Does this code make changes: NO ==
===============================================================================
#>
}
# END: Function Get-PipelineInfo
Comments