Bagikan melalui


UseSingleValueFromPipelineParameter

Tingkat Tingkat Keparahan: Peringatan

Deskripsi

Kumpulan parameter harus memiliki paling banyak satu parameter yang ditandai sebagai ValueFromPipeline = true.

Aturan ini mengidentifikasi fungsi di mana beberapa parameter dalam kumpulan parameter yang sama telah ValueFromPipeline diatur ke true (baik secara eksplisit maupun implisit).

Bagaimana

Pastikan hanya satu parameter per set parameter yang menerima input alur berdasarkan nilai. Jika Anda memerlukan beberapa parameter untuk menerima berbagai jenis input alur, gunakan kumpulan parameter terpisah.

Example

Salah

function Process-Data {
    [CmdletBinding()]
    param(
        [Parameter(ValueFromPipeline)]
        [string] $InputData,

        [Parameter(ValueFromPipeline)]
        [string] $ProcessingMode
    )

    process {
        Write-Output "$ProcessingMode`: $InputData"
    }
}

Benar

function Process-Data {
    [CmdletBinding()]
    param(
        [Parameter(ValueFromPipeline)]
        [string] $InputData,

        [Parameter(Mandatory)]
        [string] $ProcessingMode
    )
    process {
        Write-Output "$ProcessingMode`: $InputData"
    }
}

Suppression

Untuk menekan aturan ini untuk kumpulan parameter tertentu, gunakan SuppressMessage atribut dengan nama kumpulan parameter:

function Process-Data {
    [Diagnostics.CodeAnalysis.SuppressMessage('PSUseSingleValueFromPipelineParameter', 'MyParameterSet')]
    [CmdletBinding()]
    param(
        [Parameter(ValueFromPipeline, ParameterSetName='MyParameterSet')]
        [string] $InputData,

        [Parameter(ValueFromPipeline, ParameterSetName='MyParameterSet')]
        [string] $ProcessingMode
    )
    process {
        Write-Output "$ProcessingMode`: $InputData"
    }
}

Untuk set parameter default, gunakan 'default' sebagai target penekanan:

[Diagnostics.CodeAnalysis.SuppressMessage('PSUseSingleValueFromPipelineParameter', 'default')]

Catatan

  • Aturan ini berlaku untuk eksplisit ValueFromPipeline = $true dan implisit ValueFromPipeline (yang sama dengan menggunakan = $true)
  • Parameter dengan ValueFromPipeline=$false tidak ditandai oleh aturan ini
  • Aturan menangani set parameter default (__AllParameterSets) dan set parameter bernama dengan benar
  • Kumpulan parameter yang berbeda masing-masing dapat memiliki parameter tunggalnya ValueFromPipeline sendiri tanpa memicu aturan ini