about_Language_Modes
Se aplica a: Windows PowerShell 4.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