Establece y exige reglas de codificación en expresiones, scripts y bloques de script.

Sintaxis

Set-StrictMode -Off [<CommonParameters>]

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

Descripción

El cmdlet Set-StrictMode configura el modo estricto para el ámbito actual (y todos los ámbitos secundarios) y lo activa y desactiva. Cuando el modo estricto está activado, Windows PowerShell genera un error fatal cuando el contenido de una expresión, script o bloque de script infringe las reglas de codificación recomendadas básicas.

Utilice el parámetro Version para determinar qué reglas de codificación se exigen.

A diferencia del cmdlet Set-PSDebug, Set-StrictMode afecta solamente al ámbito actual y sus ámbitos secundarios, por lo que puede utilizarse en un script o función sin afectar al ámbito global.

Cuando Set-StrictMode está desactivado, se supone que las variables no inicializadas (Version 1) tienen el valor 0 (cero) o $null, dependiendo del tipo. Las referencias a propiedades no existentes devuelven $null y los resultados de sintaxis de función no válida varían según el error. No se permiten las variables sin nombre.

Parámetros

-Off

Desactiva el modo estricto. Este parámetro también desactiva "Set-PSDebug -Strict".

¿Requerido?

true

¿Posición?

named

Valor predeterminado

ninguno

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-Version <Version>

Especifica las condiciones que producen un error en modo estricto. Este parámetro es obligatorio.

Los valores válidos son: "1.0", "2.0" y "Latest". En la lista siguiente se muestra el efecto de cada valor.

1.0

-- Prohíbe las referencias a las variables no inicializadas, salvo las variables no inicializadas contenidas en cadenas.

2.0

-- Prohíbe las referencias a variables no inicializadas (incluidas las variables no inicializadas contenidas en cadenas).

-- Prohíbe las referencias a propiedades no existentes de un objeto.

-- Prohíbe las llamadas a funciones que utilizan la sintaxis de llamada a métodos.

-- Prohíbe una variable sin nombre (${}).

Latest:

-- Selecciona la última (más estricta) versión disponible. Este valor se usa para asegurarse de que los scripts utilizan la versión más estricta disponible, aunque se agreguen nuevas versiones a Windows PowerShell.

¿Requerido?

true

¿Posición?

named

Valor predeterminado

ninguno

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

<CommonParameters>

Este cmdlet admite los parámetros comunes: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer y -OutVariable. Para obtener más información, vea about_Commonparameters.

Entradas y salidas

El tipo de entrada es el tipo de los objetos que se pueden canalizar al cmdlet. El tipo devuelto es el tipo de los objetos que el cmdlet devuelve.

Entradas

Ninguno

No se pueden canalizar entradas a este cmdlet.

Salidas

Ninguno

Este cmdlet no devuelve resultados.

Notas

Set-StrictMode es similar al parámetro Strict de Set-PSDebug. "Set-Strictmode -version 1" es equivalente a "Set-PSDebug -strict", con la excepción de que Set-PSDebug es efectivo en todos los ámbitos. Set-StrictMode solamente es efectivo en el ámbito en el que se establece y en sus ámbitos secundarios. Para obtener más información sobre ámbitos en Windows PowerShell, vea about_Scopes.

Ejemplo 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

Descripción
-----------
Este comando activa el modo estricto y lo establece en la versión 1.0. En consecuencia, se producirá un error si se intenta hacer referencia a variables no inicializadas.

En el resultado de ejemplo se muestra el efecto del modo estricto en la versión 1.0.






Ejemplo 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

Descripción
-----------
Este comando activa el modo estricto y lo establece en la versión 2.0. En consecuencia, Windows PowerShell generará un error si se utiliza la sintaxis de método (paréntesis y comas) en la llamada a una función o se hace referencia a variables no inicializadas o a propiedades que no existen.

En el resultado de ejemplo se muestra el efecto del modo estricto en la versión 2.0.

Sin el modo estricto de versión 2.0, el valor "(3,4)" se interpreta como un único objeto de matriz al que no se agrega nada. Con el modo estricto de la versión 2.0, se interpreta correctamente como sintaxis imperfecta para enviar dos valores.

Sin la versión 2.0, la referencia a la propiedad Month inexistente de una cadena devuelve solamente null. Con la versión 2.0, se interpreta correctamente como un error de referencia.






Vea también




Tabla de contenido