Compartilhar via


AvoidDefaultValueSwitchParameter

Nível de gravidade: aviso

Descrição

Se o parâmetro usa apenas true e false, defina o parâmetro como tipo [Switch]. O PowerShell trata um parâmetro de comutador como true quando ele é usado com um comando. Se o parâmetro não estiver incluído com o comando, o PowerShell considerará o parâmetro como false. Não defina [Boolean] parâmetros.

Você não deve definir um parâmetro de comutador com um valor padrão de $true porque esse não é o comportamento esperado de um parâmetro de comutador.

Como

Altere o valor padrão do parâmetro switch para ser $false ou não forneça um valor padrão. Escreva a lógica do script para assumir que o valor padrão do parâmetro switch é $false ou não fornecido.

Exemplo

Errado

function Test-Script
{
    [CmdletBinding()]
    Param
    (
        [String]
        $Param1,

        [switch]
        $Switch=$True
    )
    ...
}

Correto

function Test-Script
{
    [CmdletBinding()]
    Param
    (
        [String]
        $Param1,

        [switch]
        $Switch
    )

    begin {
        # Ensure that the $Switch is set to false if not provided
        if (-not $PSBoundParameters.ContainsKey('Switch')) {
            $Switch = $false
        }
    }
    ...
}

Mais informações