Stabilisce e applica regole di codifica in espressioni, script e blocchi di script.

Sintassi

Set-StrictMode -Off [<CommonParameters>]

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

Descrizione

Il cmdlet Set-StrictMode configura e attiva/disattiva la modalità ridotta per l'ambito corrente (e tutti gli ambiti figlio). Quando è impostata la modalità ridotta, Windows PowerShell genera un errore fatale quando il contenuto di un'espressione, di uno script o di un blocco di script viola le regole di codifica della procedura ottimale di base.

Utilizzare il parametro Version per determinare le regole di codifica applicate.

A differenza del cmdlet Set-PSDebug, Set-StrictMode influisce solo sull'ambito corrente e sugli ambiti figlio, pertanto è possibile utilizzarlo in uno script o una funzionare senza influire sull'ambito globale.

Quando Set-StrictMode è disabilitato, si presuppone che le variabili non inizializzate (Version 1) dispongano di un valore 0 (zero) o $null, a seconda del tipo. I riferimenti a proprietà inesistenti restituiscono $null e i risultati della sintassi di funzioni non valida variano in base all'errore. Le variabili senza nome non sono permesse.

Parametri

-Off

Disattiva la modalità ridotta. Questo parametro disattiva anche "Set-PSDebug -Strict".

Obbligatorio?

true

Posizione?

named

Valore predefinito

nessuno

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Version <Version>

Specifica le condizioni che provocano un errore in modalità ridotta. Questo parametro è obbligatorio.

I valori validi sono: "1.0", "2.0" e "Latest". Nell'elenco seguente viene illustrato l'effetto di ogni valore.

1.0

-- Proibisce riferimenti alle variabili non inizializzate, ad eccezione di quelle nelle stringhe.

2.0

-- Proibisce riferimenti alle variabili non inizializzate (comprese le variabili non inizializzate nelle stringhe).

-- Proibisce riferimenti a proprietà inesistenti di un oggetto.

-- Proibisce chiamate di funzione che utilizzano la sintassi per i metodi di chiamata.

-- Proibisce una variabile senza un nome (${}).

Latest:

--Seleziona la versione più recente (più ridotta) tra quelle disponibili. Utilizzare questo valore per accertarsi che gli script utilizzino la versione più ridotta tra quelle disponibili, anche quando vengono aggiunte nuove versioni a Windows PowerShell.

Obbligatorio?

true

Posizione?

named

Valore predefinito

nessuno

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

<CommonParameters>

Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.

Input e output

Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.

Input

Nessuno

Non è possibile reindirizzare l'input a questo cmdlet.

Output

Nessuno

Questo cmdlet non restituisce alcun output.

Note

Set-StrictMode è simile al parametro Strict di Set-PSDebug. "Set-Strictmode -version 1" equivale a "Set-PSDebug -strict", con l'eccezione che Set-PSDebug è valido in tutti gli ambiti. Set-StrictMode è valido solo nell'ambito in cui viene impostato e nei relativi ambiti figlio. Per ulteriori informazioni sugli ambiti in Windows PowerShell, vedere about_Scopes.

Esempio 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

Descrizione
-----------
Con questo comando la modalità ridotta viene attivata e impostata sulla versione 1.0. Di conseguenza, i tentativi di riferimento a variabili non inizializzate avranno esito negativo.

Nell'output di esempio viene illustrato l'effetto della modalità ridotta in versione 1.0.






Esempio 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

Descrizione
-----------
Con questo comando la modalità ridotta viene attivata e impostata sulla versione 2.0. Di conseguenza, in Windows PowerShell viene generato un errore se si utilizza la sintassi di metodo (parentesi e virgole) per una chiamata di funzione o si fa riferimento a variabili non inizializzate o proprietà inesistenti.

Nell'output di esempio viene illustrato l'effetto della modalità ridotta in versione 2.0.

Senza la modalità ridotta in versione 2.0, il valore "(3,4)" viene interpretato come un solo oggetto matrice al quale non viene aggiunto nessun elemento. Con la modalità ridotta versione 2.0, viene interpretato correttamente come sintassi errata per l'invio di due valori.

Senza la versione 2.0, il riferimento alla proprietà Month inesistente di una stringa restituisce solo null. Con la versione 2.0, viene interpretato correttamente come un errore di riferimento.






Vedere anche




Argomenti della Guida