about_PowerShell_Config

Descrizione breve

File di configurazione per PowerShell, sostituendo la configurazione del Registro di sistema.

Descrizione lunga

Il powershell.config.json file contiene le impostazioni di configurazione per PowerShell. PowerShell carica questa configurazione all'avvio. Le impostazioni possono anche essere modificate in fase di esecuzione. In precedenza, queste impostazioni sono state archiviate nel Registro di sistema di Windows per PowerShell, ma sono ora contenute in un file per abilitare la configurazione in macOS e Linux.

Riepilogo delle impostazioni

Il powershell.config.json file può contenere le chiavi seguenti:

  • DisableImplicitWinCompat
  • WindowsPowerShellCompatibilityModuleDenyList
  • WindowsPowerShellCompatibilityNoClobberModuleList
  • ExperimentalFeatures
  • LogChannels
  • LogIdentity
  • LogKeywords
  • LogLevel
  • Microsoft.PowerShell:ExecutionPolicy
  • PSModulePath
  • PowerShellPolicies
    • ExecutionPolicy
    • ConsoleSessionConfiguration
    • ModuleLogging
    • ProtectedEventLogging
    • ScriptBlockLogging
    • ScriptExecution
    • Transcription
    • UpdatableHelp

Non tutte le chiavi si applicano a tutte le piattaforme. La PowerShellPolicies chiave contiene sottochiavi che rispecchiano le impostazioni gestite da Criteri di gruppo finestra. Queste sottochiavi si applicano anche a tutte le piattaforme quando definite a livello radice del file JSON.

Avviso

Le chiavi non riconosciute o i valori non validi nel file di configurazione vengono ignorati. Se il powershell.config.json file contiene codice JSON non valido, PowerShell non può avviare una sessione interattiva. In questo caso, è necessario correggere il file di configurazione.

Ambito di configurazione

Le impostazioni di configurazione possono essere definite per tutti gli utenti o a livello di singolo utente.

Configurazione allUsers (condivisa)

Un powershell.config.json file nella $PSHOME directory definisce la configurazione per tutte le sessioni di PowerShell in esecuzione da tale installazione di PowerShell.

Nota

Il $PSHOME percorso 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 in tutte le piattaforme con il comando Split-Path $PROFILE.CurrentUserCurrentHost.

Precedenza dell'ambito

In Windows le impostazioni gestite da Criteri di gruppo di Windows hanno la precedenza sulle impostazioni nel file di configurazione. Criteri di gruppo non esiste nelle piattaforme non Windows.

Dopo Criteri di gruppo, le impostazioni definite a livello AllUsers hanno la precedenza sulle impostazioni definite per il livello CurrentUser .

Impostazioni specifiche di Windows

Le impostazioni seguenti si applicano solo alle piattaforme Windows.

  • DisableImplicitWinCompat
  • WindowsPowerShellCompatibilityModuleDenyList
  • WindowsPowerShellCompatibilityNoClobberModuleList
  • ExecutionPolicy
  • PowerShellPolicies

DisableImplicitWinCompat

Se impostata su true, questa impostazione disabilita la funzionalità di 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.

ExecutionPolicy

Importante

Questa configurazione si applica solo alle piattaforme Windows.

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 le configurazioni AllUsers , viene impostato il criterio di esecuzione LocalMachine . Per le configurazioni CurrentUser , viene impostato il criterio di esecuzione CurrentUser .

Nell'esempio seguente i criteri di esecuzione di PowerShell vengono impostati su RemoteSigned.

{
  "Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned"
}

Per ulteriori informazioni, vedere about_Execution_Policies.

PowerShellPolicies

Windows include diverse impostazioni che possono essere gestite da Criteri di gruppo. In genere, queste impostazioni vengono archiviate nel Registro di sistema di Windows. Queste impostazioni possono essere definite anche nel powershell.config.json file.

PowerShellPolicies è un oggetto JSON che contiene coppie chiave-valore per le varie impostazioni dei criteri. Queste impostazioni dei criteri possono essere elencate anche a livello radice del file JSON, all'esterno dell'oggetto PowerShellPolicies . Questa impostazione può contenere le sottochiavi seguenti:

  • ConsoleSessionConfiguration
  • ModuleLogging
  • ProtectedEventLogging
  • ScriptBlockLogging
  • ScriptExecution
  • Transcription
  • UpdatableHelp

L'impostazione ScriptExecution viene usata per impostare i criteri di esecuzione di PowerShell. Questa impostazione ha la precedenza rispetto all'impostazione ExecutionPolicy descritta in precedenza.

Esempio:

{
    "PowerShellPolicies": {
        "ScriptExecution": {
            "ExecutionPolicy": "RemoteSigned"
        }
    }
}

Per le descrizioni delle altre impostazioni dei criteri, vedere le descrizioni nella sezione Impostazioni di configurazione comuni.

In Windows PowerShell cerca le impostazioni nel Registro di sistema. Tutte le impostazioni trovate nel Registro di sistema hanno la precedenza. PowerShell legge quindi la configurazione JSON. Tutte le impostazioni trovate in PowerShellPoliciese non definite nel Registro di sistema hanno la precedenza sulle impostazioni trovate a livello radice della configurazione JSON.

Per altre informazioni, vedere Informazioni sulle impostazioni di Criteri di gruppo.

Impostazioni per piattaforme non Windows

Le impostazioni seguenti si applicano solo alle piattaforme Linux e macOS.

Le chiavi seguenti vengono usate per configurare la registrazione di PowerShell per Linux e macOS.

  • LogChannels
  • LogIdentity
  • LogKeywords
  • LogLevel

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.

  • ConsoleSessionConfiguration
  • ExperimentalFeatures
  • ModuleLogging
  • ProtectedEventLogging
  • PSModulePath
  • ScriptBlockLogging
  • ScriptExecution
  • Transcription
  • UpdatableHelp

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 su true. 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.

ExperimentalFeatures

Nomi delle funzionalità sperimentali da abilitare in PowerShell. Il valore predefinito è una matrice vuota.

L'esempio seguente abilita le funzionalità sperimentali PSCommandNotFoundSuggestion e PSSubsystemPluginModel all'avvio di PowerShell.

Esempio:

{
  "ExperimentalFeatures": [
    "PSCommandNotFoundSuggestion",
    "PSSubsystemPluginModel"
  ]
}

Per altre informazioni sulle funzionalità sperimentali, vedere Uso delle funzionalità sperimentali.

ModuleLogging

Questa impostazione controlla il comportamento della registrazione per i moduli di PowerShell. L'impostazione contiene due sottochiavi:

  • EnableModuleLogging : per abilitare le configurazioni di sessione, impostare il valore su true. 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 che devono essere registrati.

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 il certificato fornito per crittografare i dati di log prima di scriverli nel log. I dati vengono crittografati usando lo standard CMS (Cryptographic Message Syntax). È possibile usare Unprotect-CmsMessage per 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"
    ]
  }
}

Psmodulepath

Esegue l'override delle PSModulePath impostazioni 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 .

Avviso

La configurazione di un percorso del modulo AllUsers o CurrentUser non modifica il percorso di installazione con ambito per i cmdlet PowerShellGet come Install-Module. Questi cmdlet usano sempre i percorsi predefiniti del 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 "%HOME%\Documents\PowerShell\Modules"esempio , 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 PSModulePath configurazione per un ambiente Windows:

{
  "PSModulePath": "C:\\Program Files\\PowerShell\\6\\Modules"
}

Questo esempio mostra una PSModulePath configurazione per un ambiente macOS o Linux:

{
  "PSModulePath": "/opt/powershell/6/Modules"
}

Questo esempio mostra l'incorporamento di una variabile di ambiente in una PSModulePath configurazione. Si noti che usando la HOME variabile di ambiente 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 PSModulePath configurazioni. PSModulePath le configurazioni in Linux e macOS fanno distinzione tra maiuscole e minuscole. Una PSModulePath configurazione deve usare separatori di directory validi per la piattaforma. In macOS e Linux questo significa /. In Windows, sia / che \ funzionano.

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, blocchi di script, funzioni e script richiamati in modo interattivo o tramite l'automazione.
  • EnableScriptBlockInvocationLogging : abilita la registrazione degli eventi di avvio e arresto del blocco di script.

Esempio:

"ScriptBlockLogging": {
  "EnableScriptBlockInvocationLogging": true,
  "EnableScriptBlockLogging": false
}

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é nel percorso predefinito.

Esempio:

{
    "Transcription": {
        "EnableTranscripting": true,
        "EnableInvocationHeader": true,
        "OutputDirectory": "c:\\tmp"
      }
}

Per altre informazioni, vedere Start-Transcript.For more information, see Start-Transcript.

UpdatableHelp

Questa impostazione di criterio consente di impostare il valore predefinito del parametro SourcePath nel Update-Help cmdlet . Questo valore predefinito può essere sottoposto a override specificando un valore diverso usando il parametro SourcePath .

Esempio:

{
    "UpdatableHelp": {
      "DefaultSourcePath": "f:\\temp"
    }
}