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