Set-StrictMode

Établit et met en vigueur des règles de codage dans les expressions, scripts et blocs de script.

Syntaxe

Set-StrictMode -Off [<CommonParameters>]

Set-StrictMode -Version <Version> [<CommonParameters>]

Description

L'applet de commande Set-StrictMode configure le mode strict pour la portée actuelle (et toutes les portées enfants) et l'active ou le désactive. Lorsque le mode strict est activé, Windows PowerShell génère une erreur avec fin d'exécution lorsque le contenu d'une expression, script ou bloc de script viole les meilleures pratiques de base en matière de codage.

Utilisez le paramètre Version pour déterminer quelles règles de codage sont appliquées.

Contrairement à l'applet de commande Set-PSDebug, Set-StrictMode affecte uniquement la portée actuelle et ses portées enfants, ce qui fait que vous pouvez l'utiliser dans un script ou une fonction sans affecter la portée globale.

Lorsque Set-StrictMode est désactivée, les variables non initialisées (Version 1) sont supposées avoir la valeur 0 (zéro) ou $null, selon le type. Les références à des propriétés inexistantes retournent $null et les résultats de la syntaxe de fonction non valide varient selon l'erreur. Les variables sans nom ne sont pas autorisées.

Paramètres

-Off

Désactive le mode strict. Ce paramètre désactive également « Set-PSDebug -Strict ».

Obligatoire ?

true

Position ?

named

Valeur par défaut

aucun

Accepter l'entrée de pipeline ?

false

Accepter les caractères génériques ?

false

-Version <Version>

Spécifie les conditions qui provoquent une erreur en mode strict. Ce paramètre est obligatoire.

Les valeurs valides sont « 1.0 », « 2.0 » et « Latest ». La liste suivante indique l'effet de chaque valeur.

1.0

--Interdit les références aux variables non initialisées, à l'exception de celles présentes dans les chaînes.

2.0

-- Interdit les références aux variables non initialisées (notamment les variables non initialisées présentes dans des chaînes).

-- Interdit les références à des propriétés inexistantes d'un objet.

-- Interdit les appels de fonction qui utilisent la syntaxe pour l'appel de méthodes.

-- Interdit une variable sans nom (${}).

Latest :

-- Sélectionne la version la plus récente (la plus stricte) disponible. Utilisez cette valeur pour vous assurer que les scripts utilisent la version disponible la plus stricte, même lorsque de nouvelles versions sont ajoutées à Windows PowerShell.

Obligatoire ?

true

Position ?

named

Valeur par défaut

aucun

Accepter l'entrée de pipeline ?

false

Accepter les caractères génériques ?

false

<CommonParameters>

Cette applet de commande prend en charge les paramètres courants : -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer et -OutVariable. Pour plus d'informations, consultez about_Commonparameters.

Entrées et sorties

Le type d'entrée est le type des objets que vous pouvez diriger vers l'applet de commande. Le type de retour est le type des objets que l'applet de commande retourne.

Entrées

Aucun

Vous ne pouvez pas diriger d'entrée vers cette applet de commande.

Sorties

Aucun

Cette applet de commande ne retourne aucune sortie.

Remarques

Set-StrictMode est semblable au paramètre Strict de Set-PSDebug. « Set-Strictmode -version 1 » équivaut à « Set-PSDebug –strict », sauf que Set-PSDebug est effective dans toutes les portées. Set-StrictMode est uniquement effective dans la portée où elle est définie et dans ses portées enfants. Pour plus d'informations sur les portées dans Windows PowerShell, consultez about_Scopes.

Exemple 1

C:\PS>set-strictmode -version 1.0

C:\PS> $a -gt 5
False
The variable $a cannot be retrieved because it has not been set yet.
At line:1 char:3
+ $a <<<<  -gt 5
    + CategoryInfo          : InvalidOperation: (a:Token) [], RuntimeException
    + FullyQualifiedErrorId : VariableIsUndefined

Description
-----------
Cette commande active le mode strict et le définit sur la version 1.0. Par conséquent, les tentatives visant à référencer des variables qui ne sont pas initialisées échoueront.

L'exemple de sortie montre l'effet de la version 1.0 du mode strict.





Exemple 2

C:\PS># set-strictmode -version 2.0

# Strict mode is off by default.

C:\PS> function add ($a, $b) {$a + $b}
C:\PS> add 3 4
7
C:\PS> add(3,4)
3
4

C:\PS> set-strictmode -version 2.0

C:\PS> add(3,4)

The function or command was called like a method. Parameters should be separated by spaces, as described in 'Get-Help about_Parameter.'
At line:1 char:4
+ add <<<< (3,4)
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : StrictModeFunctionCallWithParens


C:\PS> set-strictmode -off

C:\PS> $string = "This is a string".
C:\PS> $string.Month
C:\PS>

C:\PS> set-strictmode -version 2.0

C:\PS> $string = "This is a string".
C:\PS> $string.Month
Property 'month' cannot be found on this object; make sure it exists.
At line:1 char:9
+ $string. <<<< month
    + CategoryInfo          : InvalidOperation: (.:OperatorToken) [], RuntimeException
    + FullyQualifiedErrorId : PropertyNotFoundStrict

Description
-----------
Cette commande active le mode strict et le définit sur la version 2.0. En conséquence, Windows PowerShell lève une erreur si vous utilisez la syntaxe de méthode (parenthèses et virgules) pour un appel de fonction ou que vous référencez des variables non initialisées ou des propriétés inexistantes.

L'exemple de sortie montre l'effet de la version 2.0 du mode strict.

Sans le mode strict correspondant à la version 2.0, la valeur « (3,4) » est interprétée comme un objet tableau unique auquel aucun élément n'est ajouté. Avec le mode strict correspondant à la version 2.0, elle est interprétée de façon appropriée comme une syntaxe incorrecte pour l'envoi de deux valeurs.

Sans la version 2.0, la référence à la propriété Month inexistante d'une chaîne retourne seulement la valeur null. Avec la version 2.0, elle est interprétée correctement comme une erreur de référence.





Voir aussi

Concepts

about_Debuggers
about_Scopes
Set-PSDebug