UseCompatibleSyntax

Nivel de gravedad: Error

Estado por defecto: Desactivado

Descripción

Esta regla detecta elementos sintácticos que no son compatibles con las versiones objetivo de PowerShell que especificas. Cuando ejecutas esta regla desde PowerShell 3 o 4, no puede detectar sintaxis incompatible con esas versiones porque esas versiones no pueden analizar construcciones sintácticas más recientes.

Example

No conforme

El siguiente ejemplo utiliza la sintaxis de PowerShell 7. Si TargetVersions incluye 5.1 o es anterior, esta regla señala estas afirmaciones.

$message = $IsReady ? 'Ready' : 'Not ready'
$displayName = $name ?? 'Unknown'

Compliant

if ($IsReady) {
    $message = 'Ready'
} else {
    $message = 'Not ready'
}

if ($name -ne $null) {
    $displayName = $name
} else {
    $displayName = 'Unknown'
}

Configurar regla

@{
    Rules = @{
        PSUseCompatibleSyntax = @{
            Enable = $true
            TargetVersions = @(
                '6.0',
                '5.1',
                '4.0'
            )
        }
    }
}

Parameters

Enable

Este parámetro controla si ScriptAnalyzer comprueba el código con esta regla. Acepta un valor booleano. Para habilitar esta regla, establece este parámetro en $true. El valor por defecto es $false.

TargetVersions

Este parámetro especifica las versiones de PowerShell con las que tu código debe ser compatible. Acepta un array de cadenas de versión, como '7.0', '5.1', o '4.0'. ScriptAnalyzer señala una sintaxis que no está soportada en ninguna versión a la que aspires.