UseProcessBlockForPipelineCommand

Livello di gravità: Avviso

Descrizione

Questa regola rileva funzioni con parametri abilitati alla pipeline che gestiscono l'input direttamente nel corpo della funzione invece di utilizzare un blocco di processo. Le funzioni che accettano input di pipeline tramite parametri dovrebbero sempre elaborare quell'input in un blocco di processo. Gestire direttamente l'input dei parametri nel corpo della funzione può portare a comportamenti inattesi perché il corpo della funzione viene eseguito una sola volta, mentre il blocco di processo viene eseguito per ogni oggetto nella pipeline.

Example

Non conforme

Function Get-Number
{
    [CmdletBinding()]
    Param(
        [Parameter(ValueFromPipeline)]
        [int]
        $Number
    )

    $Number
}

Compliant

Function Get-Number
{
    [CmdletBinding()]
    Param(
        [Parameter(ValueFromPipeline)]
        [int]
        $Number
    )

    process
    {
        $Number
    }
}