Bagikan melalui


UseConsistentParameterSetName

Tingkat Tingkat Keparahan: Peringatan

Deskripsi

Nama kumpulan parameter di PowerShell peka huruf besar/kecil, tidak seperti kebanyakan elemen PowerShell lainnya. Aturan ini memastikan casing yang konsisten dan konfigurasi set parameter yang tepat untuk menghindari kesalahan runtime dan meningkatkan kejelasan kode.

Aturan ini melakukan lima pemeriksaan berbeda:

  1. Missing DefaultParameterSetName - Memperingatkan saat kumpulan parameter digunakan tetapi tidak ada default yang ditentukan
  2. Beberapa deklarasi parameter - Mendeteksi saat parameter dideklarasikan beberapa kali dalam kumpulan parameter yang sama. Ini pada akhirnya adalah pengecualian runtime - pemeriksaan ini membantu menangkapnya lebih cepat.
  3. Ketidakcocokan huruf besar antara DefaultParameterSetName dan ParameterSetName - Memastikan huruf besar yang konsisten
  4. Ketidakcocokan huruf besar antara nilai ParameterSetName yang berbeda - Memastikan semua referensi ke kumpulan parameter yang sama menggunakan huruf besar yang identik
  5. Nama kumpulan parameter yang berisi baris baru - Memperingatkan agar tidak menggunakan karakter baris baru dalam nama kumpulan parameter

Nota

Aturan ini tidak diaktifkan secara default. Pengguna perlu mengaktifkannya melalui pengaturan.

Bagaimana

  • Gunakan a DefaultParameterSetName saat menentukan beberapa set parameter
  • Pastikan casing yang konsisten antara DefaultParameterSetName dan ParameterSetName nilai
  • Gunakan casing yang identik untuk semua referensi ke nama set parameter yang sama
  • Hindari mendeklarasikan parameter yang sama beberapa kali dalam satu set parameter
  • Jangan gunakan karakter baris baru dalam nama kumpulan parameter

Example

Salah

# Missing DefaultParameterSetName
function Get-Data {
    [CmdletBinding()]
    param(
        [Parameter(ParameterSetName='ByName')]
        [string]$Name,

        [Parameter(ParameterSetName='ByID')]
        [int]$ID
    )
}

# Case mismatch between DefaultParameterSetName and ParameterSetName
function Get-Data {
    [CmdletBinding(DefaultParameterSetName='ByName')]
    param(
        [Parameter(ParameterSetName='byname')]
        [string]$Name,

        [Parameter(ParameterSetName='ByID')]
        [int]$ID
    )
}

# Inconsistent casing between ParameterSetName values
function Get-Data {
    [CmdletBinding(DefaultParameterSetName='ByName')]
    param(
        [Parameter(ParameterSetName='ByName')]
        [string]$Name,

        [Parameter(ParameterSetName='byname')]
        [string]$DisplayName
    )
}

# Multiple parameter declarations in same set
function Get-Data {
    param(
        [Parameter(ParameterSetName='ByName')]
        [Parameter(ParameterSetName='ByName')]
        [string]$Name
    )
}

# Parameter set name with newline
function Get-Data {
    param(
        [Parameter(ParameterSetName="Set`nOne")]
        [string]$Name
    )
}

Benar

# Proper parameter set configuration
function Get-Data {
    [CmdletBinding(DefaultParameterSetName='ByName')]
    param(
        [Parameter(ParameterSetName='ByName', Mandatory)]
        [string]$Name,

        [Parameter(ParameterSetName='ByName')]
        [Parameter(ParameterSetName='ByID')]
        [string]$ComputerName,

        [Parameter(ParameterSetName='ByID', Mandatory)]
        [int]$ID
    )
}

Konfigurasi

Rules = @{
    PSUseConsistentParameterSetName  = @{
        Enable = $true
    }
}

Parameter-parameternya

  • Enable: bool (Nilai default adalah $false)

    Aktifkan atau nonaktifkan aturan selama pemanggilan ScriptAnalyzer.

Catatan

  • Nama kumpulan parameter peka huruf besar/kecil di PowerShell, membuatnya berbeda dari sebagian besar elemen PowerShell lainnya
  • Kemunculan pertama nama kumpulan parameter dalam kode Anda diperlakukan sebagai casing kanonis
  • Parameter tanpa [Parameter()] atribut secara otomatis menjadi bagian dari semua kumpulan parameter
  • Ini adalah praktik terbaik PowerShell untuk selalu menentukan a DefaultParameterSetName saat menggunakan kumpulan parameter