Erstellt und erzwingt Codierungsregeln in Ausdrücken, Skripts und Skriptblöcken.

Syntax

Set-StrictMode -Off [<CommonParameters>]

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

Beschreibung

Mit dem Cmdlet "Set-StrictMode" wird der Strict-Modus für den aktuellen Bereich (und alle untergeordneten Bereiche) aktiviert und deaktiviert. Wenn der Strict-Modus aktiviert ist, wird von Windows PowerShell ein Fehler mit Abbruch generiert, falls der Inhalt eines Ausdrucks, Skripts oder Skriptblocks gegen grundlegende empfohlene Codierungsregeln verstößt.

Mit dem Version-Parameter können Sie die Codierungsregeln bestimmen, die erzwungen werden.

Im Gegensatz zum Cmdlet "Set-PSDebug" wirkt sich Set-StrictMode nur auf den aktuellen Bereich einschließlich der untergeordneten Bereiche aus und kann deshalb in einem Skript oder in einer Funktion verwendet werden, ohne den globalen Bereich zu beeinflussen.

Wenn Set-StrictMode deaktiviert ist, wird für nicht initialisierte Variablen (Version 1) je nach Typ der Wert 0 (null) oder "$null" zugrunde gelegt. Verweise auf nicht vorhandene Eigenschaften geben "$null" zurück, und die Ergebnisse einer ungültigen Funktionssyntax sind fehlerspezifisch. Unbenannte Variablen sind nicht zulässig.

Parameter

-Off

Deaktiviert den Strict-Modus. Mit diesem Parameter wird auch "Set-PSDebug -Strict" deaktiviert.

Erforderlich?

true

Position?

named

Standardwert

keine

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-Version <Version>

Gibt die Bedingungen an, die im Strict-Modus einen Fehler verursachen. Dieser Parameter ist erforderlich.

Die gültigen Werte sind "1.0", "2.0" und "Latest". In der folgenden Liste werden die Auswirkungen der einzelnen Werte angezeigt.

1.0

– Verhindert Verweise auf nicht initialisierte Variablen, mit Ausnahme nicht initialisierter Variablen in Zeichenfolgen.

2.0

– Verhindert Verweise auf nicht initialisierte Variablen (einschließlich nicht initialisierter Variablen in Zeichenfolgen).

– Verhindert Verweise auf nicht vorhandene Eigenschaften eines Objekts.

– Verhindert Funktionsaufrufe mit der Syntax für aufrufende Methoden.

– Verhindert eine Variable ohne Namen (${}).

Latest:

– Wählt die neueste (strengste) Version aus, die verfügbar ist. Mit diesem Wert können Sie sicherstellen, dass, auch wenn neue Versionen von Windows PowerShell hinzugefügt werden, die strengste verfügbare Version verwendet wird.

Erforderlich?

true

Position?

named

Standardwert

keine

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

<CommonParameters>

Dieses Cmdlet unterstützt die folgenden allgemeinen Parameter: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer und -OutVariable. Weitere Informationen finden Sie unter about_Commonparameters.

Eingaben und Ausgaben

Der Eingabetyp ist der Typ der Objekte, die über die Pipeline an das Cmdlet übergeben werden können. Der Rückgabetyp ist der Typ der Objekte, die das Cmdlet zurückgibt.

Eingaben

None

Eingaben können nicht über die Pipeline an dieses Cmdlet übergeben werden.

Ausgaben

None

Dieses Cmdlet gibt keine Ausgabe zurück.

Hinweise

Set-StrictMode ähnelt dem Strict-Parameter von Set-PSDebug. "Set-Strictmode -version 1" entspricht "Set-PSDebug -strict" mit der Ausnahme, dass sich Set-PSDebug auf alle Bereiche auswirkt. Set-StrictMode wirkt sich nur auf den festgelegten Bereich sowie auf die untergeordneten Bereiche aus. Weitere Informationen zu Bereichen in Windows PowerShell finden Sie unter "about_Scopes".

Beispiel 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

Beschreibung
-----------
Mit diesem Befehl wird der Strict-Modus aktiviert und auf Version 1.0 festgelegt. Verweise auf Variablen, die nicht initialisiert wurden, schlagen daher fehl.

In der Beispielausgabe werden die Auswirkungen der Version 1.0 im Strict-Modus dargestellt.






Beispiel 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

Beschreibung
-----------
Mit diesem Befehl wird der Strict-Modus aktiviert und auf Version 2.0 festgelegt. Windows PowerShell löst daher einen Fehler aus, wenn für einen Funktionsaufruf Methodensyntax (Klammern und Kommas) verwendet oder wenn auf nicht initialisierte Variablen oder nicht vorhandene Eigenschaften verwiesen wird.

In der Beispielausgabe werden die Auswirkungen der Version 2.0 im Strict-Modus dargestellt.

Ohne die Version 2.0 im Strict-Modus wird der Wert "(3,4)" als einzelnes Arrayobjekt interpretiert, dem nichts hinzugefügt wird. Mit Version 2.0 im Strict-Modus wird der Wert ordnungsgemäß als fehlerhafte Syntax zum Senden zweier Werte interpretiert.

Ohne die Version 2.0 wird durch den Verweis auf die nicht vorhandene Month-Eigenschaft einer Zeichenfolge nur NULL zurückgegeben. Mit der Version 2.0 wird der Wert ordnungsgemäß als Verweisfehler interpretiert.






Siehe auch




Inhaltsverzeichnis