about_Language_Modes

Letzte Aktualisierung: Mai 2014

Betrifft: Windows PowerShell 4.0, Windows PowerShell 5.0

THEMA

about_Language_Modes

KURZE BESCHREIBUNG

Erläutert die Sprachmodi und deren Auswirkung auf Windows PowerShell®-Sitzungen.

LANGE BESCHREIBUNG

Der Sprachmodus einer Windows PowerShell-Sitzung bestimmt unter anderem, welche Elemente der Windows PowerShell-Sprache in der Sitzung verwendet werden können.

Windows PowerShell unterstützt die folgenden Sprachmodi:

FullLanguage

ConstrainedLanguage (eingeführt mit Windows PowerShell 3.0)

RestrictedLanguage

NoLanguage

WAS IST EIN SPRACHMODUS?

Der Sprachmodus bestimmt die Sprachelemente, die in der Sitzung zulässig sind.

Der Sprachmodus ist tatsächlich eine Eigenschaft der Sitzungskonfiguration (bzw. des „Endpunkts“), die zum Erstellen der Sitzung verwendet wird. Alle Sitzungen, die eine bestimmte Sitzungskonfiguration verwenden, besitzen den Sprachmodus der Sitzungskonfiguration.

Alle Windows PowerShell-Sitzungen besitzen einen Sprachmodus, wozu auch die von Ihnen mit dem New-PSSession-Cmdlet erstellten PSSessions, temporäre Sitzungen, die den ComputerName-Parameter verwenden, sowie die Standardsitzungen zählen, die beim Start von Windows PowerShell angezeigt werden.

Remote-Sitzungen werden mithilfe der Sitzungskonfigurationen auf dem Remote-Computer erstellt. Der in der Sitzungskonfiguration festgelegte Sprachmodus bestimmt den Sprachmodus der Sitzung. Um die Sitzungskonfiguration einer PSSession anzugeben, verwenden Sie den ConfigurationName-Parameter der Cmdlets, die eine Sitzung erstellen.

SPRACHMODI

Dieser Abschnitt beschreibt die Sprachmodi in Windows PowerShell-Sitzungen.

VOLLSTÄNDIGE SPRACHE (FullLanguage)

Der FullLanguage-Sprachmodus lässt alle Sprachelemente in der Sitzung zu. FullLanguage ist der Standard-Sprachmodus für Standardsitzungen auf allen Versionen von Windows, mit Ausnahme von Windows RT.

EINGESCHRÄNKTE SPRACHE (RestrictedLanguage)

Im RestrictedLanguage-Sprachmodus können Benutzer Befehle (Cmdlets, Funktionen, CIM-Befehle und Workflows) ausführen, sie sind jedoch sind nicht berechtigt, Skriptblöcke zu verwenden.

Nur die folgenden Variablen sind zulässig:

$PSCulture

$PSUICulture

$True

$False

$Null.

Die folgenden Vergleichsoperatoren sind zulässig:

eq (gleich)

gt (größer als)

lt (kleiner als)

Zuweisungsanweisungen, Eigenschaftsverweise und Methodenaufrufe sind nicht zulässig.

KEINE SPRACHE (NoLanguage)

Im NoLanguage-Sprachmodus können Benutzer zwar Befehle ausführen, sie können aber keine Sprachelemente verwenden.

BEGRENZTE SPRACHE (ContrainedLanguage)

Der ConstrainedLanguage-Sprachmodus lässt alle Windows-Cmdlets und alle Windows PowerShell-Sprachelemente zu, aber die zulässigen Typen sind begrenzt.

Der ConstrainedLanguage-Sprachmodus wurde zur Unterstützung von User Mode Code Integrity (UMCI) auf Windows RT entwickelt. Er ist der einzige unterstützte Sprachmodus unter Windows RT, aber er ist auf allen unterstützten Systemen verfügbar.

UMCI schützt ARM-Geräte, indem es auf Windows RT-basierten Geräten nur die Installation von Apps mit Microsoft-Signatur und Microsoft-Zertifizierung zulässt. Der ConstrainedLanguage Modus verhindert, dass Benutzer mithilfe von Windows PowerShell UMCI umgehen oder dagegen zu verstoßen.

Die Funktionen des ConstrainedLanguage-Modus sind wie folgt:

Alle Cmdlets in Windows-Modulen und andere Cmdlets mit UMCI-Genehmigung sind voll funktionsfähig und haben vollständigen Zugriff auf die Systemressourcen, außer der bereits erwähnten Ausnahme.

Alle Elemente der Windows PowerShell-Skriptsprache sind zulässig.

Alle Module, die in Windows enthalten sind, können importiert werden, und alle Befehle, die von den Modulen exportiert werden, können in der Sitzung ausgeführt werden.

In Windows PowerShell-Workflow können Sie Skript-Workflows (in der Windows PowerShell-Sprache geschriebene Workflows) schreiben und ausführen. XAML-basierte Workflows werden nicht unterstützt, und Sie können XAML nicht in einem Skript-Workflow ausführen, wie z. B. durch Verwendung von „Invoke-Expression -Language XAML“. Außerdem können Workflows keine anderen Workflows aufrufen, obwohl geschachtelte Workflows zulässig sind.

Das Add-Type-Cmdlet kann signierte Assemblys laden, aber es kann keinen beliebigen C#-Code oder Win32-APIs laden.

Das New-Object-Cmdlet kann nur für zulässige Typen (siehe unten) verwendet werden.

Nur die zulässigen Typen (siehe unten) können in Windows PowerShell verwendet werden. Andere Typen sind nicht zulässig.

Die Typumwandlung ist zwar zulässig, aber nur wenn das Ergebnis ein zulässiger Typ ist.

Cmdlet-Parameter, die Zeichenfolgeneingabe in Typen konvertieren, funktionieren nur, wenn der resultierende Typ ein zulässiger Typ ist.

Die ToString()-Methode und die .NET-Methoden der zulässigen Typen (siehe unten) können aufgerufen werden. Andere Methoden können nicht aufgerufen werden.

Benutzer können alle Eigenschafen der zulässigen Typen abrufen. Benutzer können die Werte der Eigenschaften nur für Kerntypen festlegen.

Nur die folgenden COM-Objekte sind zulässig.

Scripting.Dictionary

Scripting.FileSystemObject

VBScript.RegExp

Zulässige Typen:

Die folgenden Typen sind im ConstrainedLanguage-Sprachmodus zulässig. Benutzer können Eigenschaften abrufen, Methoden aufrufen und Objekte in diese Typen konvertieren.

        AliasAttribute
        AllowEmptyCollectionAttribute
        AllowEmptyStringAttribute
        AllowNullAttribute
        Array
        Bool
        byte
        char
        CmdletBindingAttribute
        DateTime
        decimal
        DirectoryEntry
        DirectorySearcher
        double
        float
        Guid
        Hashtable
        int
        Int16
        long
        ManagementClass
        ManagementObject
        ManagementObjectSearcher
        NullString
        OutputTypeAttribute
        ParameterAttribute
        PSCredential
        PSDefaultValueAttribute
        PSListModifier
        PSObject
        PSPrimitiveDictionary
        PSReference
        PSTypeNameAttribute
        Regex
        SByte
        string
        SupportsWildcardsAttribute
        SwitchParameter
        System.Globalization.CultureInfo
        System.Net.IPAddress
        System.Net.Mail.MailAddress
        System.Numerics.BigInteger
        System.Security.SecureString
        TimeSpan
        UInt16
        UInt32
        UInt64

HERAUSFINDEN DES SPRACHMODUS EINER SITZUNGSKONFIGURATION

Wenn eine Sitzungskonfiguration mithilfe einer Sitzungskonfigurationsdatei erstellt wird, besitzt die Sitzungskonfiguration eine LanguageMode-Eigenschaft. Sie können den Sprachmodus herausfinden, indem Sie den Wert der LanguageMode-Eigenschaft abrufen.

        PS C:\>(Get-PSSessionConfiguration -Name Test).LanguageMode
        FullLanguage

Bei anderen Sitzungskonfigurationen können Sie den Sprachmodus indirekt herausfinden, indem Sie den Sprachmodus einer Sitzung herausfinden, die mit der Sitzungskonfiguration erstellt wurde.

HERAUSFINDEN DES SPRACHMODUS EINER SITZUNG

Sie können den Sprachmodus einer FullLanguage- oder ConstrainedLanguage-Sitzung herausfinden, indem Sie den Werts der LanguageMode-Eigenschaft des Sitzungsstatus abrufen.

Beispiel:

        PS C:\>$ExecutionContext.SessionState.LanguageMode
        ConstrainedLanguage

Allerdings können Sie in Sitzungen mit RestrictedLanguage- und NoLanguage-Sprachmodi nicht die Punkt-Methode verwenden, um die Eigenschaftswerte abzurufen. Stattdessen wird der Sprachmodus aus der Fehlermeldung deutlich.

Beim Ausführen des $ExecutionContext.SessionState.LanguageMode-Befehls in einer RestrictedLanguage-Sitzung gibt Windows PowerShell die PropertyReferenceNotSupportedInDataSection- und VariableReferenceNotSupportedInDataSection-Fehlermeldungen zurück.

PropertyReferenceNotSupportedInDataSection:

Referenzen auf Eigenschaften sind im RestrictedLanguage-Modus oder in einem Data-Abschnitt nicht zulässig.

VariableReferenceNotSupportedInDataSection

Es wird eine Variable referenziert, die im RestrictedLanguage-Modus nicht referenziert werden kann, oder es wird ein Data-Abschnitt referenziert.

Beim Ausführen des $ExecutionContext.SessionState.LanguageMode-Befehls in einer NoLanguage-Sitzung gibt Windows PowerShell die ScriptsNotAllowed-Fehlermeldung zurück.

ScriptsNotAllowed

Die Syntax wird von diesen Runspace nicht unterstützt. Das kann daran liegen, weil er sich im NoLanguage-Modus befindet.

SCHLÜSSELWÖRTER

about_ConstrainedLanguage

about_FullLanguage

about_NoLanguage

about_RestrictedLanguage

SIEHE AUCH

about_Session_ConfigurationFiles

about_Session_Configurations

about_Windows_RT