Wednesday, January 22, 2025
HomePowershellThe way to Create Pipeline-Prepared Capabilities

The way to Create Pipeline-Prepared Capabilities


You will have explored how the PowerShell pipeline works and the way built-in cmdlets cross knowledge from one command to a different. However do you know you’ll be able to create your individual customized features that additionally use the pipeline? Sure! With a parameter binding, your features can act similar to built-in cmdlets, seamlessly accepting knowledge from the pipeline.

This tutorial will information you to equipping your customized features with the facility of the pipeline, remodeling the way you automate and construction your PowerShell scripts.

Reasonably than counting on loops or handbook inputs, unlock new ranges of effectivity and suppleness in your scripting!

Enabling Pipeline Enter with ValueFromPipeline

On your perform to obtain data from the pipeline, you need to configure a number of parameters to just accept it. You’ll configure parameters to make use of the ValueFromPipeline or ValueFromPipelineByPropertyName attribute.

Let’s begin by organising a perform that installs software program on a number of computer systems to cross an array of pc names to it with out utilizing a loop.

Add the ValueFromPipeline attribute to the ComputerName parameter, permitting every incoming pipeline object to be handled because the ComputerName parameter.

PowerShell will bind every incoming pipeline object to $ComputerName with this setup.

perform Set up-Software program {
    param(
        [Parameter(Mandatory)]
        [ValidateSet(1,2)]
        [int]$Model,

        [Parameter(Mandatory, ValueFromPipeline)]
        [string]$ComputerName
    )
    course of {
        Write-Host "I put in software program model $Model on $ComputerName. Yippee!"
    }
}

Now, cross an array of pc names to the perform utilizing the pipeline.

$computer systems = @("SRV1", "SRV2", "SRV3")
$computer systems | Set up-Software program -Model 1

With out the course of block, the perform would solely deal with the final merchandise. The course of block permits the perform to independently course of every merchandise within the array.

Binding by Property Title with ValueFromPipelineByPropertyName

Maybe you’ve gotten a number of properties in your pipeline objects that have to match the parameters of your perform. In that case, let’s assume a CSV file comprises each the ComputerName and Model fields.

To display binding by property title, begin by saving a CSV file containing these properties:

@(
    [pscustomobject]@{'ComputerName' = 'SRV1'; 'Model' = 1}
    [pscustomobject]@{'ComputerName' = 'SRV2'; 'Model' = 2}
    [pscustomobject]@{'ComputerName' = 'SRV3'; 'Model' = 2}
) | Export-Csv -Path C:Scriptssoftware_installs.csv -NoTypeInformation

Replace the perform to just accept Model and ComputerName by property title.

With ValueFromPipelineByPropertyName, the perform matches properties in every object (corresponding to these imported from a CSV) with parameters within the perform.

perform Set up-Software program {
    param(
        [Parameter(Mandatory, ValueFromPipelineByPropertyName)]
        [ValidateSet(1,2)]
        [int]$Model,

        [Parameter(Mandatory, ValueFromPipelineByPropertyName)]
        [string]$ComputerName
    )
    course of {
        Write-Host "I put in software program model $Model on $ComputerName. Yippee!"
    }
}

Now, use Import-Csv to import the file and pipe every object to Set up-Software program.

Import-Csv -Path C:Scriptssoftware_installs.csv | Set up-Software program

Every row’s ComputerName and Model fields bind to the respective parameters within the perform. This strategy allows straightforward bulk processing of software program installations throughout a number of computer systems with model management.

Conclusion

On this tutorial, you discovered learn how to allow pipeline assist in PowerShell features, making them extra versatile and highly effective. Now you can design customized features that seamlessly settle for knowledge from the pipeline, much like built-in cmdlets.

With pipeline-enabled features, you acquire finer management over knowledge enter, simplifying script design and enhancing readability.

As you proceed working with PowerShell, think about integrating these methods to jot down environment friendly, pipeline-ready features. Make your scripts extra adaptable and efficient in automating duties!

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments