about_PowerShell_Config
Description courte
Fichiers de configuration pour PowerShell, en remplaçant la configuration du Registre.
Description longue
Le powershell.config.json
fichier contient des paramètres de configuration pour PowerShell. PowerShell charge cette configuration au démarrage. Les paramètres peuvent également être modifiés au moment de l’exécution. Auparavant, ces paramètres étaient stockés dans le Registre Windows pour PowerShell, mais ils sont maintenant contenus dans un fichier pour activer la configuration sur macOS et Linux.
Résumé des paramètres
Le powershell.config.json
fichier peut contenir les clés suivantes :
DisableImplicitWinCompat
WindowsPowerShellCompatibilityModuleDenyList
WindowsPowerShellCompatibilityNoClobberModuleList
ExperimentalFeatures
LogChannels
LogIdentity
LogKeywords
LogLevel
Microsoft.PowerShell:ExecutionPolicy
PSModulePath
PowerShellPolicies
ExecutionPolicy
ConsoleSessionConfiguration
ModuleLogging
ProtectedEventLogging
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
Toutes les clés ne s’appliquent pas à toutes les plateformes. La PowerShellPolicies
clé contient des sous-clés qui reflètent les paramètres gérés par la stratégie de groupe Window. Ces sous-clés s’appliquent également à toutes les plateformes lorsqu’elles sont définies au niveau racine du fichier JSON.
Avertissement
Les clés non reconnues ou les valeurs non valides dans le fichier de configuration sont ignorées. Si le powershell.config.json
fichier contient un JSON non valide, PowerShell ne peut pas démarrer une session interactive. Si cela se produit, vous devez corriger le fichier de configuration.
Étendue de configuration
Les paramètres de configuration peuvent être définis pour tous les utilisateurs ou au niveau de l’utilisateur individuel.
Configuration d’AllUsers (partagé)
Un powershell.config.json
fichier dans le $PSHOME
répertoire définit la configuration de toutes les sessions PowerShell exécutées à partir de cette installation De PowerShell.
Remarque
L’emplacement $PSHOME
est défini comme le même répertoire que l’assembly d’exécution System.Management.Automation.dll. Cela s’applique également aux instances du Kit de développement logiciel (SDK) PowerShell hébergées.
Configurations CurrentUser (par utilisateur)
Vous pouvez également configurer PowerShell par utilisateur en plaçant le fichier dans le répertoire de configuration de l’étendue utilisateur. Le répertoire de configuration utilisateur se trouve sur plusieurs plateformes avec la commande Split-Path $PROFILE.CurrentUserCurrentHost
.
Priorité de l’étendue
Sur Windows, les paramètres gérés par la stratégie de groupe Windows sont prioritaires sur les paramètres dans le fichier de configuration. La stratégie de groupe n’existe pas sur les plateformes non Windows.
Après la stratégie de groupe, les paramètres définis au niveau AllUsers sont prioritaires sur les paramètres définis pour le niveau CurrentUser .
Paramètres spécifiques à Windows
Les paramètres suivants s’appliquent uniquement aux plateformes Windows.
DisableImplicitWinCompat
WindowsPowerShellCompatibilityModuleDenyList
WindowsPowerShellCompatibilityNoClobberModuleList
ExecutionPolicy
PowerShellPolicies
DisableImplicitWinCompat
Lorsque cette valeur est définie true
, ce paramètre désactive la fonctionnalité de compatibilité Windows PowerShell. La compatibilité Windows PowerShell permet à PowerShell 7 de charger des modules Windows PowerShell 5.1 en mode de compatibilité.
Pour plus d’informations, consultez about_Windows_PowerShell_Compatibility.
WindowsPowerShellCompatibilityModuleDenyList
Ce paramètre est un tableau de noms de modules que vous souhaitez exclure de la participation à la fonctionnalité de compatibilité Windows PowerShell.
Pour plus d’informations, consultez about_Windows_PowerShell_Compatibility.
WindowsPowerShellCompatibilityNoClobberModuleList
Ce paramètre est un tableau de noms de modules qui ne doivent pas être clobés en chargeant la version windows PowerShell 5.1 du module.
Pour plus d’informations, consultez about_Windows_PowerShell_Compatibility.
ExecutionPolicy
Important
Cette configuration s’applique uniquement sur les plateformes Windows.
Configure la stratégie d’exécution pour les sessions PowerShell, déterminant les scripts qui peuvent être exécutés. Par défaut, PowerShell utilise la stratégie d’exécution existante.
Pour les configurations AllUsers , cela définit la stratégie d’exécution localMachine . Pour les configurations CurrentUser , cela définit la stratégie d’exécution CurrentUser .
L’exemple suivant définit la stratégie d’exécution de PowerShell sur RemoteSigned
.
{
"Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned"
}
Pour plus d'informations, voir about_Execution_Policies.
PowerShellPolicies
Windows a plusieurs paramètres qui peuvent être gérés par la stratégie de groupe. En règle générale, ces paramètres sont stockés dans le Registre Windows. Ce paramètre peut également être défini dans le powershell.config.json
fichier.
Il PowerShellPolicies
s’agit d’un objet JSON qui contient des paires clé-valeur pour les différents paramètres de stratégie. Ces paramètres de stratégie peuvent également être répertoriés au niveau racine du fichier JSON, en dehors de l’objet PowerShellPolicies
. Ce paramètre peut contenir les sous-clés suivantes :
ConsoleSessionConfiguration
ModuleLogging
ProtectedEventLogging
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
Le ScriptExecution
paramètre est utilisé pour définir la stratégie d’exécution De PowerShell.
Cela est prioritaire sur le ExecutionPolicy
paramètre décrit ci-dessus.
Exemple :
{
"PowerShellPolicies": {
"ScriptExecution": {
"ExecutionPolicy": "RemoteSigned"
}
}
}
Pour obtenir des descriptions des autres paramètres de stratégie, consultez les descriptions de la section Paramètres de configuration courants.
Sur Windows, PowerShell recherche les paramètres dans le Registre. Tous les paramètres trouvés dans le Registre sont prioritaires. PowerShell lit ensuite la configuration JSON. Tous les paramètres trouvés sous PowerShellPolicies
, et non définis dans le Registre, sont prioritaires sur les paramètres trouvés au niveau racine de la configuration JSON.
Pour plus d’informations, consultez about_Group_Policy_Settings.
Paramètres pour les plateformes non-Windows
Les paramètres suivants s’appliquent uniquement aux plateformes Linux et macOS.
Les clés suivantes sont utilisées pour configurer la journalisation de PowerShell pour Linux et macOS.
LogChannels
LogIdentity
LogKeywords
LogLevel
Pour obtenir une description complète de la journalisation PowerShell pour les systèmes non-Windows, consultez about_Logging_Non-Windows.
Paramètres de configuration courants
Les paramètres suivants sont disponibles sur toutes les plateformes prises en charge.
ConsoleSessionConfiguration
ExperimentalFeatures
ModuleLogging
ProtectedEventLogging
PSModulePath
ScriptBlockLogging
ScriptExecution
Transcription
UpdatableHelp
ConsoleSessionConfiguration
Ce paramètre spécifie la configuration de session à utiliser pour toutes les sessions PowerShell. Il peut s’agir de n’importe quel point de terminaison inscrit sur l’ordinateur local, y compris les points de terminaison de communication à distance PowerShell par défaut ou un point de terminaison personnalisé ayant des fonctionnalités de rôle utilisateur spécifiques.
Cette clé contient deux sous-clés :
EnableConsoleSessionConfiguration
- pour activer les configurations de session, définissez la valeurtrue
sur . Par défaut, cette valeur est définie surfalse
.ConsoleSessionConfigurationName
- Spécifie le nom du point de terminaison de configuration dans lequel PowerShell est exécuté. Par défaut, aucune session n’est définie.
{
"ConsoleSessionConfiguration": {
"EnableConsoleSessionConfiguration": false,
"ConsoleSessionConfigurationName" : []
}
}
Pour plus d’informations, consultez about_Session_Configurations.
ExperimentalFeatures
Noms des fonctionnalités expérimentales à activer dans PowerShell. La valeur par défaut est un tableau vide.
L’exemple suivant active les fonctionnalités expérimentales PSCommandNotFoundSuggestion et PSSubsystemPluginModel lors du démarrage de PowerShell.
Exemple :
{
"ExperimentalFeatures": [
"PSCommandNotFoundSuggestion",
"PSSubsystemPluginModel"
]
}
Pour plus d’informations sur les fonctionnalités expérimentales, consultez Utilisation des fonctionnalités expérimentales.
ModuleLogging
Ce paramètre contrôle le comportement de la journalisation pour les modules PowerShell. Le paramètre contient deux sous-clés :
EnableModuleLogging
- pour activer la journalisation des modules, définissez la valeurtrue
sur . En cas d’activation, les événements d’exécution de pipeline pour les membres des modules spécifiés sont enregistrés dans les fichiers journaux PowerShell.ModuleNames
- Spécifie le nom des modules qui doivent être enregistrés.
Exemple :
{
"ModuleLogging": {
"EnableModuleLogging": true,
"ModuleNames" : [
"PSReadLine",
"PowerShellGet"
]
}
}
ProtectedEventLogging
Ce paramètre vous permet de configurer la journalisation des événements protégés. Le paramètre contient deux sous-clés :
EnableProtectedEventLogging
- Si vous activez ce paramètre de stratégie, les composants qui le prennent en charge utilisent le certificat que vous fournissez pour chiffrer les données de journal avant de les écrire dans le journal. Les données sont chiffrées à l’aide de la norme CMS (Cryptographic Message Syntax). Vous pouvez utiliserUnprotect-CmsMessage
pour déchiffrer ces messages chiffrés, si vous avez accès à la clé privée du certificat.EncryptionCertificate
- Fournit une liste de noms de certificats à utiliser pour le chiffrement.
Exemple :
{
"ProtectedEventLogging": {
"EnableProtectedEventLogging": false,
"EncryptionCertificate": [
"Joe"
]
}
}
PSModulePath
Remplace les PSModulePath
paramètres de cette session PowerShell. Si la configuration concerne l’utilisateur actuel, définit le chemin du module CurrentUser . Si la configuration concerne tous les utilisateurs, définit le chemin du module AllUsers .
Avertissement
La configuration d’un chemin de module AllUsers ou CurrentUser ici ne modifie pas l’emplacement d’installation délimité pour les applets de commande PowerShellGet telles que Install-Module. Ces applets de commande utilisent toujours les chemins de module par défaut .
Si aucune valeur n’est définie, PowerShell utilise la valeur par défaut pour le paramètre de chemin d’accès de module respectif. Pour plus d’informations sur ces valeurs par défaut, consultez about_PSModulePath.
Ce paramètre permet aux variables d’environnement d’être utilisées en les incorporant entre %
des caractères, comme "%HOME%\Documents\PowerShell\Modules"
, de la même façon que l’interpréteur de commandes Windows. Cette syntaxe s’applique également sur Linux et macOS. Consultez les exemples ci-dessous.
Cet exemple montre une PSModulePath
configuration pour un environnement Windows :
{
"PSModulePath": "C:\\Program Files\\PowerShell\\6\\Modules"
}
Cet exemple montre une PSModulePath
configuration pour un environnement macOS ou Linux :
{
"PSModulePath": "/opt/powershell/6/Modules"
}
Cet exemple montre l’incorporation d’une variable d’environnement dans une PSModulePath
configuration. Notez que l’utilisation de la HOME
variable d’environnement et du /
séparateur de répertoires fonctionne sur Windows, macOS et Linux.
{
"PSModulePath": "%HOME%/Documents/PowerShell/Modules"
}
Cet exemple utilise une variable d’environnement qui fonctionne uniquement sur macOS et Linux :
{
"PSModulePath": "%XDG_CONFIG_HOME%/powershell/Modules"
}
Remarque
Les variables PowerShell ne peuvent pas être incorporées dans les PSModulePath
configurations.
PSModulePath
les configurations sur Linux et macOS respectent la casse. Une PSModulePath
configuration doit utiliser des séparateurs d’annuaire valides pour la plateforme. Sur macOS et Linux, cela signifie /
. Sur Windows, les deux /
et \
fonctionnent.
ScriptBlockLogging
Ce paramètre contrôle la journalisation de toutes les entrées de script PowerShell. Ce paramètre contient deux sous-clés :
EnableScriptBlockLogging
- Si vous activez ce paramètre de stratégie, PowerShell enregistre le traitement des commandes, des blocs de script, des fonctions et des scripts, qu’ils soient appelés de manière interactive ou via l’automatisation.EnableScriptBlockInvocationLogging
: active la journalisation des événements de démarrage et d’arrêt du bloc de script.
Exemple :
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": false
}
Transcription
Ce paramètre de stratégie vous permet de capturer l’entrée et la sortie des commandes PowerShell dans les transcriptions textuelles. Si vous activez ce paramètre de stratégie, PowerShell active la transcription pour toutes les sessions PowerShell.
Ce paramètre contrôle le fonctionnement de la transcription dans PowerShell. Ce paramètre contient trois sous-clés :
EnableTranscripting
- Lorsque ce paramètre est activé, PowerShell crée des fichiers journaux de transcription à l’emplacement configuré.EnableInvocationHeader
- Par défaut, PowerShell inclut un en-tête en haut du fichier journal de transcription. Vous pouvez désactiver l’en-tête à l’aide de ce paramètre.OutputDirectory
- Ce paramètre vous permet de collecter les fichiers journaux de transcription dans un emplacement central au lieu de l’emplacement par défaut.
Exemple :
{
"Transcription": {
"EnableTranscripting": true,
"EnableInvocationHeader": true,
"OutputDirectory": "c:\\tmp"
}
}
Pour plus d’informations, consultez Start-Transcript.
UpdatableHelp
Ce paramètre de stratégie vous permet de définir la valeur par défaut du paramètre SourcePath sur l’applet Update-Help
de commande. Cette valeur par défaut peut être substituée en spécifiant une autre valeur à l’aide du paramètre SourcePath .
Exemple :
{
"UpdatableHelp": {
"DefaultSourcePath": "f:\\temp"
}
}