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 miroir 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 autres que 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 valeur truesur . Par défaut, cette valeur est définie sur false.

  • 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 les configurations de session, définissez la valeur truesur . 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 utiliser Unprotect-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"
    }
}