Compartir a través de


AvoidDefaultValueSwitchParameter

Nivel de gravedad de : advertencia

Descripción

Si el parámetro solo toma true y false, defina el parámetro como tipo [Switch]. PowerShell trata un parámetro switch como true cuando se usa con un comando . Si el parámetro no se incluye con el comando , PowerShell considera que el parámetro es false. No defina [Boolean] parámetros.

No debe definir un parámetro switch con un valor predeterminado de $true porque no es el comportamiento esperado de un parámetro switch.

Cómo

Cambie el valor predeterminado del parámetro switch para que sea $false o no proporcione un valor predeterminado. Escriba la lógica del script para suponer que el valor predeterminado del parámetro switch es $false o no se proporciona.

Ejemplo

Incorrecto

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

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

Correcto

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
        }
    }
    ...
}

Más información