about_Language_Modes

Se aplica a: Windows PowerShell 4.0, Windows PowerShell 5.0

TEMA

about_Language_Modes

DESCRIPCIÓN BREVE

Explica los modos de lenguaje y su efecto en las sesiones de Windows PowerShell®.

DESCRIPCIÓN LARGA

El modo de lenguaje de una sesión de Windows PowerShell determina, en parte, los elementos del lenguaje de Windows PowerShell que se pueden usar en la sesión.

Windows PowerShell admite los siguientes modos de idioma:

FullLanguage

ConstrainedLanguage (introducido en Windows PowerShell 3.0)

RestrictedLanguage

NoLanguage

¿QUÉ ES UN MODO DE LENGUAJE?

El modo de lenguaje determina los elementos del lenguaje permitidos en la sesión.

En realidad, un modo de lenguaje es una propiedad de la configuración de sesión (o "extremo") que se usa para crear la sesión. Todas las sesiones que usan una configuración de sesión determinada tienen el modo de lenguaje de la configuración de sesión.

Todas las sesiones de Windows PowerShell tienen un modo de lenguaje, incluidas las PSSessions creadas mediante el cmdlet New-PSSession, las sesiones temporales que usan el parámetro ComputerName y las sesiones predeterminadas que aparecen al iniciar Windows PowerShell.

Las sesiones remotas se crean mediante las configuraciones de sesión en el equipo remoto. El modo de lenguaje establecido en la configuración de sesión determina el modo de lenguaje de la sesión. Para especificar la configuración de sesión de una PSSession, use el parámetro ConfigurationName de los cmdlets que crean una sesión.

MODOS DE LENGUAJE

En esta sección se describen los modos de lenguaje de las sesiones de Windows PowerShell.

LENGUAJE COMPLETO (FullLanguage)

El modo de lenguaje FullLanguage permite todos los elementos de lenguaje en la sesión. FullLanguage es el modo de lenguaje predeterminado para las sesiones predeterminadas en todas las versiones de Windows excepto Windows RT.

LENGUAJE RESTRINGIDO (RestrictedLanguage)

En el modo de lenguaje RestrictedLanguage, los usuarios pueden ejecutar comandos (cmdlets, funciones, comandos CIM y flujos de trabajo), pero no pueden usar bloques de scripts.

Solo se permiten las siguientes variables:

$PSCulture

$PSUICulture

$True

$False

$Null.

Solo se permiten los siguientes operadores de comparación:

eq (igual)

gt (mayor que)

lt (menor que)

No se permiten instrucciones de asignación, referencias a propiedades y llamadas a métodos.

SIN LENGUAJE (NoLanguage)

En el modo de lenguaje NoLanguage, los usuarios pueden ejecutar comandos, pero no pueden usar ningún elemento de lenguaje.

RESTRINGIDA LANGUAGE (lenguaje restringida)

El modo de lenguaje ConstrainedLanguage permite todos los cmdlets de Windows y todos los elementos de lenguaje de Windows PowerShell, pero limita los tipos permitidos.

El modo de lenguaje ConstrainedLanguage está diseñado para dar soporte a la Integridad de código del modo de usuario (UMCI) en Windows RT. Es el único modo de lenguaje admitido en Windows RT, pero está disponible en todos los sistemas compatibles.

La UMCI protege los dispositivos ARM al permitir la instalación únicamente de aplicaciones firmadas y certificadas por Microsoft en dispositivos basados en Windows RT. El modo ConstrainedLanguage impide que los usuarios usen Windows PowerShell para evitar o infringir la UMCI.

Las características del modo ConstrainedLanguage son las siguientes:

Todos los cmdlets de los módulos de Windows, así como otros cmdlets aprobados por la UMCI, son totalmente funcionales y tienen acceso completo a los recursos del sistema, excepto los indicados.

Se permiten todos los elementos del lenguaje de scripting de Windows PowerShell.

Se pueden importar todos los módulos incluidos en Windows, y todos los comandos que exportan los módulos se ejecutan en la sesión.

En el flujo de trabajo de Windows PowerShell, puede escribir y ejecutar flujos de trabajo de scripts (flujos de trabajo escritos en el lenguaje de Windows PowerShell). No se admiten los flujos de trabajo basados en XAML y no se puede ejecutar el XAML en un flujo de trabajo de scripts (por ejemplo, mediante "Invoke-Expression -Language XAML"). Además, los flujos de trabajo no pueden llamar a otros flujos de trabajo, aunque se permitan los flujos de trabajo anidados.

El cmdlet Add-Type puede cargar ensamblados firmados, pero no puede cargar ningún código arbitrario de C# ni las API de Win32.

El cmdlet New-Object solo se puede usar en los tipos permitidos (que aparecen a continuación).

En Windows PowerShell solo se pueden usar los tipos permitidos (que aparecen a continuación). No se admiten otros tipos.

Se permite la conversión de tipos, pero solo si el resultado es un tipo permitido.

Los parámetros de cmdlet que convierten la entrada de cadena en tipos solo funcionan si el tipo resultante es un tipo permitido.

Se puede invocar el método ToString() y los métodos .NET de los tipos permitidos (que aparecen a continuación). No se puede invocar otros métodos.

Los usuarios pueden obtener todas las propiedades de los tipos permitidos. Los usuarios pueden establecer los valores de las propiedades únicamente en los tipos básicos.

Solo se permiten los siguientes objetos COM.

Scripting.Dictionary

Scripting.FileSystemObject

VBScript.RegExp

Tipos permitidos:

Se permiten los siguientes tipos en el modo de lenguaje ConstrainedLanguage. Los usuarios pueden obtener las propiedades, invocar métodos y convertir objetos en estos tipos.

        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

BUSCAR EL MODO DE LENGUAJE DE UNA CONFIGURACIÓN DE SESIÓN

Al crear una configuración de sesión mediante un archivo de configuración de sesión, la configuración de sesión tiene una propiedad LanguageMode. Encontrará el modo de lenguaje obteniendo el valor de la propiedad LanguageMode.

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

En otras configuraciones de sesión, encontrará el modo de lenguaje de forma indirecta buscando el modo de lenguaje de una sesión creada mediante la configuración de sesión.

BUSCAR EL MODO DE LENGUAJE DE UNA SESIÓN

Encontrará el modo de lenguaje de una sesión FullLanguage o ConstrainedLanguage obteniendo el valor de la propiedad LanguageMode del estado de sesión.

Por ejemplo:

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

Sin embargo, en las sesiones con los modos de lenguaje RestrictedLanguage y NoLanguage, no puede usar el método de punto para obtener los valores de la propiedad. En su lugar, el mensaje de error muestra el modo de lenguaje.

Al ejecutar el comando $ExecutionContext.SessionState.LanguageMode en una sesión RestrictedLanguage, Windows PowerShell devuelve los mensajes de error PropertyReferenceNotSupportedInDataSection y VariableReferenceNotSupportedInDataSection.

PropertyReferenceNotSupportedInDataSection:

No se permiten las referencias de propiedad en el modo de lenguaje restringido ni en una sección de datos.

VariableReferenceNotSupportedInDataSection

Se hace referencia a una variable a la que no se puede hacer referencia en el modo de lenguaje restringido o en una sección de datos.

Al ejecutar el comando $ExecutionContext.SessionState.LanguageMode en una sesión NoLanguage, Windows PowerShell devuelve el mensaje de error ScriptsNotAllowed.

ScriptsNotAllowed

La sintaxis no es compatible con este espacio de ejecución. Esto puede deberse a que está en el modo NoLanguage.

PALABRAS CLAVE

about_ConstrainedLanguage

about_FullLanguage

about_NoLanguage

about_RestrictedLanguage

VEA TAMBIÉN

about_Session_ConfigurationFiles

about_Session_Configurations

about_Windows_RT