Set-StrictMode
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.