about_Session_Configuration_Files
Descrizione breve
Descrive i file di configurazione della sessione, usati in una configurazione di sessione (nota anche come "endpoint") per definire l'ambiente delle sessioni che usano la configurazione di sessione.
Descrizione lunga
Queste informazioni si applicano solo a PowerShell in esecuzione in Windows.
Un "file di configurazione della sessione" è un file di testo con estensione pssc che contiene una tabella hash di proprietà e valori di configurazione della sessione. È possibile usare un file di configurazione della sessione per impostare le proprietà di una configurazione di sessione. In questo modo viene definito l'ambiente di tutte le sessioni di PowerShell che usano tale configurazione di sessione.
I file di configurazione della sessione semplificano la creazione di configurazioni di sessione personalizzate senza usare assembly o script C# complessi.
Una "configurazione di sessione" o "endpoint" è una raccolta di impostazioni del computer locale che determinano quali utenti possono creare sessioni nel computer; quali comandi gli utenti possono eseguire in tali sessioni; e se la sessione deve essere eseguita come account virtuale con privilegi. Per altre informazioni sulle configurazioni di sessione, vedere about_Session_Configurations.
Le configurazioni di sessione sono state introdotte in Windows PowerShell 2.0 e i file di configurazione della sessione sono stati introdotti in Windows PowerShell 3.0. È necessario usare Windows PowerShell 3.0 per includere un file di configurazione della sessione in una configurazione di sessione. Tuttavia, gli utenti di Windows PowerShell 2.0 (e versioni successive) sono interessati dalle impostazioni nella configurazione della sessione.
Creazione di sessioni personalizzate
È possibile personalizzare molte funzionalità di una sessione di PowerShell specificando le proprietà della sessione in una configurazione di sessione. È possibile personalizzare una sessione scrivendo un programma C# che definisce uno spazio di esecuzione personalizzato oppure è possibile usare un file di configurazione della sessione per definire le proprietà delle sessioni create usando la configurazione della sessione. Come regola generale, è più facile usare il file di configurazione della sessione che scrivere un programma C#.
È possibile usare un file di configurazione della sessione per creare elementi come sessioni completamente funzionanti per gli utenti altamente attendibili; sessioni bloccate che consentono l'accesso minimo; sessioni progettate per particolari e che contengono solo i moduli necessari per tali attività; e sessioni in cui gli utenti senza privilegi possono eseguire solo comandi specifici come account con privilegi.
Oltre a questo, è possibile gestire se gli utenti della sessione possono usare elementi del linguaggio di PowerShell, ad esempio blocchi di script, o se possono eseguire solo comandi. È possibile gestire la versione di PowerShell che gli utenti possono eseguire nella sessione; gestire i moduli importati nella sessione; e gestire quali cmdlet, funzioni e alias possono essere eseguiti dagli utenti di sessione. Quando si usa il campo RoleDefinitions, è possibile offrire agli utenti funzionalità diverse nella sessione in base all'appartenenza al gruppo.
Per altre informazioni su RoleDefinitions e su come definire questo valore, vedere l'argomento della Guida per il cmdlet New-PSRoleCapabilityFile.
Creazione di un file di configurazione di sessione
Il modo più semplice per creare un file di configurazione della sessione consiste nell'usare il cmdlet New-PSSessionConfigurationFile. Questo cmdlet genera un file che usa la sintassi e il formato corretti e che verifica automaticamente molti dei valori delle proprietà del file di configurazione.
Per descrizioni dettagliate delle proprietà che è possibile impostare in un file di configurazione della sessione, vedere l'argomento della Guida per il cmdlet New-PSSessionConfigurationFile.
Il comando seguente crea un file di configurazione della sessione che usa i valori predefiniti. Il file di configurazione risultante usa solo i valori predefiniti perché non sono inclusi parametri diversi dal parametro Path (che specifica il percorso del file):
New-PSSessionConfigurationFile -Path .\Defaults.pssc
Per visualizzare il nuovo file di configurazione nell'editor di testo predefinito, usare il comando seguente:
Invoke-Item -Path .\Defaults.pssc
Per creare una configurazione di sessione per le sessioni in cui l'utente può eseguire comandi, ma non usare altri elementi del linguaggio di PowerShell, digitare:
New-PSSessionConfigurationFile -LanguageMode NoLanguage
-Path .\NoLanguage.pssc
Nel comando precedente, l'impostazione del parametro LanguageMode su NoLanguage impedisce agli utenti di eseguire operazioni come la scrittura o l'esecuzione di script o l'uso di variabili.
Per creare una configurazione di sessione per le sessioni in cui gli utenti possono usare solo i cmdlet Get, digitare:
New-PSSessionConfigurationFile -VisibleCmdlets Get-*
-Path .\GetSessions.pssc
Nell'esempio precedente l'impostazione del parametro VisibleCmdlets su Get-* limita gli utenti ai cmdlet con nomi che iniziano con il valore stringa "Get-".
Per creare una configurazione di sessione per le sessioni eseguite con un account virtuale con privilegi anziché le credenziali dell'utente, digitare:
New-PSSessionConfigurationFile -RunAsVirtualAccount
-Path .\VirtualAccount.pssc
Per creare una configurazione di sessione per le sessioni in cui i comandi visibili all'utente vengono specificati in un file delle funzionalità del ruolo, digitare:
New-PSSessionConfigurationFile -RoleDefinitions
@{ 'CONTOSO\User' = @{ RoleCapabilities = 'Maintenance' }}
-Path .\Maintenance.pssc
Uso di un file di configurazione di sessione
È possibile includere un file di configurazione della sessione quando si crea una configurazione di sessione o si aggiunge un file alla configurazione della sessione in un secondo momento.
Per includere un file di configurazione della sessione durante la creazione di una configurazione di sessione, usare il parametro Path del cmdlet Register-PSSessionConfiguration.
Ad esempio, il comando seguente usa il file NoLanguage.pssc quando crea una configurazione di sessione NoLanguage.
Register-PSSessionConfiguration -Name NoLanguage
-Path .\NoLanguage.pssc
All'avvio di una nuova sessione NoLanguage, gli utenti avranno accesso solo ai comandi di PowerShell.
Per aggiungere un file di configurazione di sessione a una configurazione di sessione esistente, usare il cmdlet Set-PSSessionConfiguration e il parametro Path. Ciò influisce su tutte le nuove sessioni create con la configurazione di sessione specificata. Si noti che il cmdlet Set-PSSessionConfiguration modifica la sessione stessa e non modifica il file di configurazione della sessione.
Ad esempio, il comando seguente aggiunge il file NoLanguage.pssc alla configurazione della sessione LockedDown.
Set-PSSessionConfiguration -Name LockedDown
-Path .\NoLanguage.pssc
Quando gli utenti usano la configurazione della sessione LockedDown per creare una sessione, potranno eseguire i cmdlet, ma non potranno creare o usare variabili, assegnare valori o usare altri elementi del linguaggio di PowerShell.
Il comando seguente usa il cmdlet New-PSSession per creare una sessione nel computer Srv01 che usa la configurazione della sessione LockedDown, salvando un riferimento oggetto alla sessione nella variabile $s. L'elenco di controllo di accesso (elenco di controllo di accesso) della configurazione della sessione determina chi può usarlo per creare una sessione.
$s = New-PSSession -ComputerName Srv01
-ConfigurationName LockedDown
Poiché i vincoli NoLanguage sono stati aggiunti alla configurazione della sessione LockedDown, gli utenti nelle sessioni LockedDown potranno eseguire solo comandi e cmdlet di PowerShell. Ad esempio, i due comandi seguenti usano il cmdlet Invoke-Command per eseguire i comandi nella sessione a cui si fa riferimento nella variabile $s. Il primo comando, che esegue il cmdlet Get-UICulture e non usa variabili, ha esito positivo. Il secondo comando, che ottiene il valore della variabile $PSUICulture, ha esito negativo.
Invoke-Command -Session $s {Get-UICulture}
en-US
Invoke-Command -Session $s {$PSUICulture}
The syntax is not supported by this runspace. This might be
because it is in no-language mode.
+ CategoryInfo : ParserError: ($PSUICulture:String) [],
ParseException
+ FullyQualifiedErrorId : ScriptsNotAllowed
Modifica di un file di configurazione della sessione
Tutte le impostazioni in una configurazione di sessione, ad eccezione di RunAsVirtualAccount e RunAsVirtualAccountGroups, possono essere modificate modificando il file di configurazione della sessione usato dalla configurazione della sessione. A tale scopo, iniziare individuando la copia attiva del file di configurazione della sessione.
Quando si usa un file di configurazione di sessione in una configurazione di sessione, PowerShell crea una copia attiva del file di configurazione della sessione e lo archivia nella directory $pshome\SessionConfig nel computer locale.
Il percorso della copia attiva di un file di configurazione della sessione viene archiviato nella proprietà ConfigFilePath dell'oggetto di configurazione della sessione.
Il comando seguente ottiene il percorso del file di configurazione della sessione per la configurazione della sessione NoLanguage.
(Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath
Questo comando restituisce un percorso di file simile al seguente:
C:\WINDOWS\System32\WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc
È possibile modificare il file pssc in qualsiasi editor di testo. Dopo aver salvato il file, verrà usato da tutte le nuove sessioni che usano la configurazione della sessione.
Se è necessario modificare le impostazioni RunAsVirtualAccount o RunAsVirtualAccountGroups, è necessario annullare la registrazione della configurazione della sessione e registrare nuovamente un file di configurazione della sessione che include i valori modificati.
Test di un file di configurazione della sessione
Usare il cmdlet Test-PSSessionConfigurationFile per testare i file di configurazione della sessione modificati manualmente. È importante: se la sintassi e i valori dei file non sono validi, gli utenti non potranno usare la configurazione di sessione per creare una sessione.
Ad esempio, il comando seguente testa il file di configurazione sessione attivo della configurazione della sessione NoLanguage.
Test-PSSessionConfigurationFile -Path C:\WINDOWS\System32\
WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc
Se la sintassi e i valori nel file di configurazione sono validi, Test-PSSessionConfigurationFile restituisce True. Se la sintassi e i valori non sono validi, il cmdlet restituisce False.
È possibile usare Test-PSSessionConfigurationFile per testare qualsiasi file di configurazione della sessione, inclusi i file creati dal cmdlet New-PSSessionConfiguration. Per altre informazioni, vedere l'argomento della Guida per il cmdlet Test-PSSessionConfigurationFile.
Rimozione di un file di configurazione di sessione
Non è possibile rimuovere un file di configurazione di sessione da una configurazione di sessione. Tuttavia, è possibile sostituire il file con un nuovo file che usa le impostazioni predefinite. Ciò annulla in modo efficace le impostazioni usate dal file di configurazione originale.
Per sostituire un file di configurazione della sessione, creare un nuovo file di configurazione della sessione che usa le impostazioni predefinite, quindi usare il cmdlet Set-PSSessionConfiguration per sostituire il file di configurazione sessione personalizzato con il nuovo file.
Ad esempio, i comandi seguenti creano un file di configurazione sessione predefinito e quindi sostituiscono il file di configurazione sessione attivo nella configurazione della sessione NoLanguage.
New-PSSessionConfigurationFile -Path .\Default.pssc
Set-PSSessionConfiguration -Name NoLanguage
-Path .\Default.pssc
Al termine di questi comandi, la configurazione della sessione NoLanguage fornirà effettivamente supporto linguistico completo (impostazione predefinita) per tutte le sessioni create con tale configurazione di sessione.
Visualizzazione delle proprietà di una configurazione sessione Gli oggetti di configurazione della sessione che rappresentano le configurazioni di sessione che usano i file di configurazione della sessione hanno proprietà aggiuntive che semplificano l'individuazione e l'analisi della configurazione della sessione. Si noti che il nome del tipo illustrato di seguito include una definizione di visualizzazione formattata. È possibile visualizzare le proprietà eseguendo il cmdlet Get-PSSessionConfiguration e inviando i dati restituiti al cmdlet Get-Member:
Get-PSSessionConfiguration NoLanguage | Get-Member
TypeName: Microsoft.PowerShell.Commands.PSSessionConfigurationCommands
#PSSessionConfiguration
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.O...
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Architecture NoteProperty System.String Archit...
Author NoteProperty System.String Author...
AutoRestart NoteProperty System.String AutoRe...
Capability NoteProperty System.Object[] Capa...
CompanyName NoteProperty System.String Compan...
configfilepath NoteProperty System.String config...
Copyright NoteProperty System.String Copyri...
Enabled NoteProperty System.String Enable...
ExactMatch NoteProperty System.String ExactM...
ExecutionPolicy NoteProperty System.String Execut...
Filename NoteProperty System.String Filena...
GUID NoteProperty System.String GUID=0...
ProcessIdleTimeoutSec NoteProperty System.String Proces...
IdleTimeoutms NoteProperty System.String IdleTi...
lang NoteProperty System.String lang=e...
LanguageMode NoteProperty System.String Langua...
MaxConcurrentCommandsPerShell NoteProperty System.String MaxCon...
MaxConcurrentUsers NoteProperty System.String MaxCon...
MaxIdleTimeoutms NoteProperty System.String MaxIdl...
MaxMemoryPerShellMB NoteProperty System.String MaxMem...
MaxProcessesPerShell NoteProperty System.String MaxPro...
MaxShells NoteProperty System.String MaxShells
MaxShellsPerUser NoteProperty System.String MaxShe...
Name NoteProperty System.String Name=N...
PSVersion NoteProperty System.String PSVersion
ResourceUri NoteProperty System.String Resour...
RunAsPassword NoteProperty System.String RunAsP...
RunAsUser NoteProperty System.String RunAsUser
SchemaVersion NoteProperty System.String Schema...
SDKVersion NoteProperty System.String SDKVer...
OutputBufferingMode NoteProperty System.String Output...
SessionType NoteProperty System.String Sessio...
UseSharedProcess NoteProperty System.String UseSha...
SupportsOptions NoteProperty System.String Suppor...
xmlns NoteProperty System.String xmlns=...
XmlRenderingType NoteProperty System.String XmlRen...
Permission ScriptProperty System.Object Permis...
Queste proprietà semplificano la ricerca di configurazioni di sessione specifiche. Ad esempio, è possibile usare la proprietà ExecutionPolicy per trovare una configurazione di sessione che supporta le sessioni con i criteri di esecuzione RemoteSigned. Si noti che, poiché la proprietà ExecutionPolicy esiste solo nelle sessioni che usano file di configurazione della sessione, il comando potrebbe non restituire tutte le configurazioni di sessione idonee.
Get-PSSessionConfiguration |
where {$_.ExecutionPolicy -eq "RemoteSigned"}
Il comando seguente ottiene le configurazioni di sessione in cui RunAsUser è l'amministratore di Exchange.
Get-PSSessionConfiguration |
where {$_.RunAsUser -eq "Exchange01\Admin01"}
Per visualizzare informazioni sulle definizioni di ruolo associate a una configurazione, usare il cmdlet Get-PSSessionCapability. Questo cmdlet consente di determinare i comandi e l'ambiente disponibili per utenti specifici in endpoint specifici.
Note
Le configurazioni di sessione supportano anche un tipo di sessione noto come sessione "vuota". Un tipo di sessione vuoto consente di creare sessioni personalizzate con i comandi selezionati. Se non si aggiungono moduli, funzioni o script a una sessione vuota, la sessione è limitata alle espressioni e potrebbe non essere di uso pratico. La proprietà SessionType indica se si utilizza o meno una sessione vuota.
Vedi anche
- about_Session_Configurations
- New-PSRoleCapabilityFile
- New-PSSession
- Get-PSSessionCapability
- Disable-PSSessionConfiguration
- Enable-PSSessionConfiguration
- Get-PSSessionConfiguration
- Register-PSSessionConfiguration
- Set-PSSessionConfiguration
- Unregister-PSSessionConfiguration
- New-PSSessionConfigurationFile
- Test-PSSessionConfigurationFile