about_Language_Modes

Aggiornamento: maggio 2014

Si applica a: Windows PowerShell 4.0, Windows PowerShell 5.0

ARGOMENTO

about_Language_Modes

DESCRIZIONE BREVE

In questo articolo vengono illustrate le modalità linguaggio nelle sessioni Windows PowerShell®.

DESCRIZIONE LUNGA

La modalità linguaggio di una sessione di Windows PowerShell determina, in parte, quali elementi del linguaggio di Windows PowerShell possono essere usati nella sessione.

Windows PowerShell supporta le modalità linguaggio seguente:

FullLanguage

ConstrainedLanguage (introdotta in Windows PowerShell 3.0)

RestrictedLanguage

NoLanguage

CHE COS'È UNA MODALITÀ LINGUAGGIO?

La modalità linguaggio determina gli elementi del linguaggio consentiti nella sessione.

La modalità linguaggio è effettivamente una proprietà della configurazione di sessione (o "endpoint") che viene usata per creare la sessione. Tutte le sessioni che usano una configurazione di sessione particolare presentano la modalità linguaggio della configurazione della sessione.

Tutte le sessioni di Windows PowerShell presentano una modalità linguaggio, comprese le PSSession create mediante il cmdlet New-PSSession, le sessioni temporanee che usano il parametro ComputerName e le sessioni predefinite che vengono visualizzate all'avvio di Windows PowerShell.

Le sessioni remote vengono create usando le configurazioni di sessione nel computer remoto. La modalità linguaggio impostata nella configurazione della sessione determina la modalità linguaggio della sessione. Per specificare la configurazione della sessione di una PSSession, usare il parametro ConfigurationName dei cmdlet che creano una sessione.

MODALITÀ LINGUAGGIO

In questa sezione vengono descritte le modalità linguaggio nelle sessioni di Windows PowerShell.

LINGUAGGIO COMPLETO (FullLanguage)

La modalità linguaggio FullLanguage consente tutti gli elementi di linguaggio nella sessione. FullLanguage è la modalità linguaggio predefinita per le sessioni predefinite in tutte le versioni di Windows a eccezione di Windows RT.

LINGUAGGIO LIMITATO (RestrictedLanguage)

In modalità linguaggio RestrictedLanguage, gli utenti possono eseguire comandi (cmdlet, funzioni, comandi CIM e flussi di lavoro) ma non sono autorizzati a usare i blocchi di script.

Sono consentite solo le variabili seguenti:

$PSCulture

$PSUICulture

$True

$False

$Null.

Sono consentiti solo gli operatori di confronto seguenti:

eq (uguale)

gt (maggiore di)

lt (minore di)

Istruzioni di assegnazione, riferimenti a proprietà e chiamate ai metodi non sono consentiti.

NESSUN LINGUAGGIO (NoLanguage)

Nella modalità linguaggio NoLanguage, gli utenti possono eseguire comandi, ma non possono usare alcun elemento del linguaggio.

LINGUAGGIO VINCOLATO (ConstrainedLanguage)

La modalità linguaggio ConstrainedLanguage consente tutti i cmdlet di Windows e tutti gli elementi del linguaggio di Windows PowerShell, ma limita i tipi consentiti.

La modalità linguaggio ConstrainedLanguage è progettata per supportare l'integrità del codice modalità utente (UMCI) in Windows RT. È l'unica modalità linguaggio supportata in Windows RT, ma è disponibile in tutti i sistemi supportati.

UMCI protegge i dispositivi ARM, consentendo l'installazione solo delle app firmate e certificate Microsoft su dispositivi basati su Windows RT. La modalità ConstrainedLanguage impedisce agli utenti di usare Windows PowerShell per eludere o violare UMCI.

Le caratteristiche della modalità ConstrainedLanguage sono le seguenti:

Tutti i cmdlet nei moduli di Windows e altri cmdlet approvati UMCI sono completamente funzionali e hanno accesso completo alle risorse di sistema, ad eccezione di quanto indicato.

Tutti gli elementi del linguaggio di scripting di Windows PowerShell sono consentiti.

Tutti i moduli inclusi in Windows possono essere importati e tutti i comandi esportati dai moduli possono essere eseguiti nella sessione.

Nel flusso di lavoro di Windows PowerShell, è possibile scrivere ed eseguire flussi di lavoro di script (scritti nel linguaggio di Windows PowerShell). I flussi di lavoro basati su XAML non sono supportati e non è possibile eseguire XAML in un flusso di lavoro di script, ad esempio usando "Invoke-Expression -Language XAML". Inoltre, i flussi di lavoro non possono chiamare altri flussi di lavoro, anche se i flussi di lavoro nidificati sono consentiti.

Il cmdlet Add-Type può caricare assembly firmati, ma non può caricare codice arbitrario in C# o API Win32.

Il cmdlet New-Object può essere usato solo in tipi consentiti (elencati di seguito).

Solo i tipi consentiti (elencati di seguito) possono essere usati in Windows PowerShell. Altri tipi non sono consentiti.

La conversione tipo è consentita, ma solo quando il risultato è un tipo consentito.

I parametri dei cmdlet che convertono l'input di stringa in tipi funzionano solo quando il tipo risultante è un tipo consentito.

È possibile richiamare il metodo ToString () e i metodi .NET di tipi consentiti (elencati di seguito). Non è possibile richiamare altri metodi.

Gli utenti possono ottenere tutte le proprietà dei tipi consentiti. Gli utenti possono impostare i valori delle proprietà solo su tipi di base.

Sono consentiti solo i seguenti oggetti COM.

Scripting.Dictionary

Scripting.FileSystemObject

VBScript.RegExp

Tipi consentiti:

I tipi seguenti sono consentiti in modalità linguaggio ConstrainedLanguage. Gli utenti possono ottenere proprietà, richiamare metodi e convertire gli oggetti in questi tipi.

        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

INDIVIDUARE LA MODALITÀ LINGUAGGIO DI UNA CONFIGURAZIONE DI SESSIONE

Quando viene creata una configurazione di sessione usando un file di configurazione della sessione, la configurazione della sessione presenta una proprietà LanguageMode. È possibile trovare la modalità linguaggio ottenendo il valore della proprietà LanguageMode.

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

In altre configurazioni di sessione, è possibile trovare la modalità linguaggio indirettamente individuando la modalità linguaggio di una sessione creata usando la configurazione della sessione.

INDIVIDUARE LA MODALITÀ LINGUAGGIO DI UNA SESSIONE

È possibile trovare la modalità linguaggio di una sessione FullLanguage o ConstrainedLanguage ottenendo il valore della proprietà LanguageMode dello stato della sessione.

Ad esempio:

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

Tuttavia, nelle sessioni con modalità linguaggio RestrictedLanguage e NoLanguage, non è possibile usare il metodo del punto per ottenere i valori delle proprietà. Il messaggio di errore rivela invece la modalità linguaggio.

Quando si esegue il comando $ExecutionContext.SessionState.LanguageMode in una sessione RestrictedLanguage, Windows PowerShell restituisce messaggi di errore PropertyReferenceNotSupportedInDataSection e VariableReferenceNotSupportedInDataSection.

PropertyReferenceNotSupportedInDataSection:

I riferimenti di proprietà non sono consentiti in modalità linguaggio limitato o in una sezione Dati.

VariableReferenceNotSupportedInDataSection

Una variabile alla quale non si piò fare riferimento in modalità linguaggio limitato o in una sezione Dati di riferimento.

Quando si esegue il comando $ExecutionContext.SessionState.LanguageMode in una sessione NoLanguage, Windows PowerShell restituisce il messaggio di errore ScriptsNotAllowed.

ScriptsNotAllowed

Sintassi non supportata dallo spazio di esecuzione. È possibile che sia in modalità nessun linguaggio.

PAROLE CHIAVE

about_ConstrainedLanguage

about_FullLanguage

about_NoLanguage

about_RestrictedLanguage

VEDERE ANCHE

about_Session_ConfigurationFiles

about_Session_Configurations

about_Windows_RT