Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Breve descrizione
File di configurazione per PowerShell, sostituendo la configurazione del Registro di sistema.
Descrizione lunga
Il file powershell.config.json contiene le impostazioni di configurazione per PowerShell. PowerShell carica questa configurazione all'avvio. Le impostazioni possono anche essere modificate in fase di esecuzione. Non tutte le chiavi si applicano a tutte le piattaforme.
Avvertimento
Le chiavi non riconosciute o i valori non validi nel file di configurazione vengono ignorati. Se il file powershell.config.json contiene codice JSON non valido, PowerShell non può avviare una sessione interattiva. In questo caso, è necessario correggere il file di configurazione.
Riepilogo delle impostazioni
Il file powershell.config.json può contenere le chiavi seguenti:
DisableImplicitWinCompatWindowsPowerShellCompatibilityModuleDenyListWindowsPowerShellCompatibilityNoClobberModuleListExperimentalFeaturesLogChannelsLogIdentityLogKeywordsLogLevelMicrosoft.PowerShell:ExecutionPolicyPSModulePathPowerShellPoliciesExecutionPolicyConsoleSessionConfigurationModuleLoggingProtectedEventLoggingScriptBlockLoggingScriptExecutionTranscriptionUpdatableHelp
Ambito di configurazione
Le impostazioni di configurazione possono essere definite per tutti gli utenti o a livello di singolo utente.
Precedenza dell'ambito
Ad eccezione di alcuni casi speciali, le impostazioni definite a livello CurrentUser hanno la precedenza sulle impostazioni definite per il livello AllUsers .
Nei sistemi Windows:
- Le impostazioni gestite da Windows Criteri di gruppo hanno la precedenza sulle impostazioni nei file di configurazione.
- I criteri di esecuzione supportano le impostazioni a livello di ambito.
In tutte le piattaforme:
- Il valore risultante di
$env:PSModulePathè un merge dei valori dellaPSModulePathchiave di entrambi gli ambiti.
Configurazione allUsers (condivisa)
Un file powershell.config.json nella directory $PSHOME definisce la configurazione per tutte le sessioni di PowerShell in esecuzione dall'installazione di PowerShell.
Nota
Il percorso $PSHOME viene definito come la stessa directory dell'assembly System.Management.Automation.dll in esecuzione. Questo vale anche per le istanze di PowerShell SDK ospitate.
Configurazioni CurrentUser (per utente)
È anche possibile configurare PowerShell in base all'utente inserendo il file nella directory di configurazione dell'ambito utente. La directory di configurazione utente è disponibile su più piattaforme con il comando seguente:
Split-Path $PROFILE.CurrentUserCurrentHost
Impostazioni specifiche di Windows
Le impostazioni seguenti si applicano solo alle piattaforme Windows.
DisableImplicitWinCompatWindowsPowerShellCompatibilityModuleDenyListWindowsPowerShellCompatibilityNoClobberModuleListMicrosoft.PowerShell:ExecutionPolicyPowerShellPoliciesScriptExecution
DisableImplicitWinCompat
Se impostato su true, questa impostazione disabilita la funzionalità compatibilità di Windows PowerShell. La compatibilità di Windows PowerShell consente a PowerShell 7 di caricare i moduli di Windows PowerShell 5.1 in modalità di compatibilità.
Per altre informazioni, vedere about_Windows_PowerShell_Compatibility.
WindowsPowerShellCompatibilityModuleDenyList
Questa impostazione è una matrice di nomi di modulo che si desidera escludere dalla partecipazione alla funzionalità compatibilità di Windows PowerShell.
Per altre informazioni, vedere about_Windows_PowerShell_Compatibility.
WindowsPowerShellCompatibilityNoClobberModuleList
Questa impostazione è una matrice di nomi di modulo che non devono essere clobbered caricando la versione di Windows PowerShell 5.1 del modulo.
Per altre informazioni, vedere about_Windows_PowerShell_Compatibility.
Microsoft. PowerShell:ExecutionPolicy
Configura i criteri di esecuzione per le sessioni di PowerShell, determinando quali script possono essere eseguiti. Per impostazione predefinita, PowerShell usa i criteri di esecuzione esistenti.
Per configurazioni di AllUsers, imposta il criterio di esecuzione LocalMachine. Per configurazioni di CurrentUser, imposta i criteri di esecuzione CurrentUser.
Nell'esempio seguente i criteri di esecuzione di PowerShell vengono impostati su RemoteSigned.
{
"Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned"
}
Per altre informazioni, vedere about_Execution_Policies.
Impostazioni per le piattaforme non Windows
Le impostazioni seguenti si applicano solo alle piattaforme Linux e macOS.
Usare le chiavi seguenti per configurare la registrazione di PowerShell per Linux e macOS.
LogChannelsLogIdentityLogKeywordsLogLevel
Per una descrizione completa della registrazione di PowerShell per sistemi non Windows, vedere about_Logging_Non-Windows.
Impostazioni di configurazione comuni
Le impostazioni seguenti sono disponibili in tutte le piattaforme supportate.
ExperimentalFeaturesPSModulePathPowerShellPolicies
ExperimentalFeatures
Nomi delle funzionalità sperimentali da abilitare in PowerShell. Il valore predefinito è una matrice vuota.
L'esempio seguente abilita il PSCommandNotFoundSuggestion e PSSubsystemPluginModel funzionalità sperimentali all'avvio di PowerShell.
Esempio:
{
"ExperimentalFeatures": [
"PSCommandNotFoundSuggestion",
"PSSubsystemPluginModel"
]
}
Per altre informazioni sulle funzionalità sperimentali, vedere Uso di funzionalità sperimentali.
PSModulePath
Esegue l'override delle impostazioni PSModulePath per questa sessione di PowerShell. Se la configurazione è per l'utente corrente, imposta il percorso del modulo CurrentUser. Se la configurazione è per tutti gli utenti, imposta il percorso del modulo AllUsers.
Avvertimento
La configurazione di un AllUsers o percorso del modulo CurrentUser non modifica il percorso di installazione con ambito per i cmdlet PowerShellGet, ad esempio Install-Module. Questi cmdlet usano sempre i percorsi predefiniti modulo.
Se non viene impostato alcun valore, PowerShell usa il valore predefinito per l'impostazione del percorso del modulo corrispondente. Per altre informazioni su queste impostazioni predefinite, vedere about_PSModulePath.
Questa impostazione consente di usare le variabili di ambiente incorporandole tra % caratteri, ad esempio "%HOME%\Documents\PowerShell\Modules", nello stesso modo consentito dalla shell dei comandi di Windows. Questa sintassi si applica anche in Linux e macOS. Vedere di seguito per esempi.
Questo esempio mostra una configurazione PSModulePath per un ambiente Windows:
{
"PSModulePath": "C:\\Program Files\\PowerShell\\7\\Modules"
}
Questo esempio mostra una configurazione PSModulePath per un ambiente macOS o Linux:
{
"PSModulePath": "/opt/powershell/6/Modules"
}
Questo esempio mostra l'incorporamento di una variabile di ambiente in una configurazione di PSModulePath. Si noti che usando la variabile di ambiente HOME e il separatore di directory /, questa sintassi funziona in Windows, macOS e Linux.
{
"PSModulePath": "%HOME%/Documents/PowerShell/Modules"
}
Questo esempio usa una variabile di ambiente che funziona solo in macOS e Linux:
{
"PSModulePath": "%XDG_CONFIG_HOME%/powershell/Modules"
}
Nota
Le variabili di PowerShell non possono essere incorporate nelle configurazioni di PSModulePath.
PSModulePath configurazioni in Linux e macOS fanno distinzione tra maiuscole e minuscole. Una configurazione PSModulePath deve usare separatori di directory validi per la piattaforma. In macOS e Linux questo significa /. In Windows, sia / che \ funzionano.
PowerShellPolicies
PowerShellPolicies è un oggetto JSON che contiene coppie chiave-valore per le varie impostazioni. Ad eccezione dell'impostazioneScriptExecution, tutte le impostazioni possono essere usate nelle piattaforme Windows, Linux e macOS.
PowerShellPolicies contiene le sottochiavi seguenti:
ConsoleSessionConfigurationModuleLoggingProtectedEventLoggingScriptBlockLoggingScriptExecutionTranscriptionUpdatableHelp
In Windows queste impostazioni possono essere gestite da Windows Criteri di gruppo. Le impostazioni di Criteri di gruppo hanno la precedenza. Se un valore non è impostato da Criteri di gruppo, PowerShell applica i valori nel file JSON nell'ordine di precedenza dell'ambito .
Criteri di gruppo è il modo consigliato per gestire queste impostazioni nei sistemi Windows. Per altre informazioni, vedere about_Group_Policy_Settings.
ConsoleSessionConfiguration
Questa impostazione specifica la configurazione della sessione da usare per tutte le sessioni di PowerShell. Può trattarsi di qualsiasi endpoint registrato nel computer locale, inclusi gli endpoint remoti predefiniti di PowerShell o un endpoint personalizzato con funzionalità specifiche del ruolo utente.
Questa chiave contiene due sottochiavi:
EnableConsoleSessionConfiguration: per abilitare le configurazioni di sessione, impostare il valore sutrue. Per impostazione predefinita, questo valore èfalse.ConsoleSessionConfigurationName: specifica il nome dell'endpoint di configurazione in cui viene eseguito PowerShell. Per impostazione predefinita, non è definita alcuna sessione.
{
"ConsoleSessionConfiguration": {
"EnableConsoleSessionConfiguration": false,
"ConsoleSessionConfigurationName" : []
}
}
Per altre informazioni, vedere about_Session_Configurations.
ModuleLogging
Questa impostazione controlla il comportamento della registrazione per i moduli di PowerShell. L'impostazione contiene due sottochiavi:
-
EnableModuleLogging: per abilitare la registrazione dei moduli, impostare il valore sutrue. Se abilitato, gli eventi di esecuzione della pipeline per i membri dei moduli specificati vengono registrati nei file di log di PowerShell. -
ModuleNames: specifica il nome dei moduli da registrare.
Esempio:
{
"ModuleLogging": {
"EnableModuleLogging": true,
"ModuleNames" : [
"PSReadLine",
"PowerShellGet"
]
}
}
ProtectedEventLogging
Questa impostazione consente di configurare La registrazione eventi protetta. L'impostazione contiene due sottochiavi:
-
EnableProtectedEventLogging: se si abilita questa impostazione di criterio, i componenti che lo supportano usano per crittografare i dati di log prima di scriverli nel log. I dati vengono crittografati usando lo standard CMS (Cryptographic Message Syntax). È possibile usareUnprotect-CmsMessageper decrittografare questi messaggi crittografati, se si ha accesso alla chiave privata del certificato. -
EncryptionCertificate: fornisce un elenco di nomi di certificati da usare per la crittografia.
Esempio:
{
"ProtectedEventLogging": {
"EnableProtectedEventLogging": false,
"EncryptionCertificate": [
"Joe"
]
}
}
ScriptBlockLogging
Questa impostazione controlla la registrazione di tutti gli input di script di PowerShell. Questa impostazione contiene due sottochiavi:
-
EnableScriptBlockLogging- Se si abilita questa impostazione di criterio, PowerShell registra l'elaborazione di comandi, scriptblock, funzioni e script richiamati in modo interattivo o tramite l'automazione. -
EnableScriptBlockInvocationLogging: abilita la registrazione degli eventi di avvio e arresto di scriptblock.
Esempio:
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": false
}
ScriptExecution
L'impostazione ScriptExecution viene usata per impostare i criteri di esecuzione di PowerShell.
Questa impostazione ha la precedenza sull'impostazione Microsoft.PowrShell:ExecutionPolicy descritta in precedenza.
Esempio:
{
"PowerShellPolicies": {
"ScriptExecution": {
"ExecutionPolicy": "RemoteSigned"
}
}
}
Nota
Si tratta di un'impostazione di sola Windows.
Trascrizione
Questa impostazione di criterio consente di acquisire l'input e l'output dei comandi di PowerShell nelle trascrizioni basate su testo. Se si abilita questa impostazione di criterio, PowerShell abilita la trascrizione per tutte le sessioni di PowerShell.
Questa impostazione controlla il funzionamento della trascrizione in PowerShell. Questa impostazione contiene tre sottochiavi:
-
EnableTranscripting: quando questa impostazione è abilitata, PowerShell crea file di log di trascrizione nel percorso configurato. -
EnableInvocationHeader: per impostazione predefinita, PowerShell include un'intestazione nella parte superiore del file di log di trascrizione. È possibile disabilitare l'intestazione usando questa impostazione. -
OutputDirectory: questa impostazione consente di raccogliere i file di log di trascrizione in una posizione centrale anziché in quella predefinita.
Esempio:
{
"Transcription": {
"EnableTranscripting": true,
"EnableInvocationHeader": true,
"OutputDirectory": "C:\\tmp"
}
}
Per altre informazioni, vedere start-transcript .
UpdatableHelp
Questa impostazione di criterio consente di impostare il valore predefinito del parametro SourcePath nel cmdlet Update-Help. Questo valore predefinito può essere sottoposto a override specificando un valore diverso usando il parametro SourcePath.
Esempio:
{
"UpdatableHelp": {
"DefaultSourcePath": "F:\\temp"
}
}