À propos de la configuration de PowerShellAbout PowerShell Config

DESCRIPTION COURTESHORT DESCRIPTION

Fichiers de configuration pour PowerShell Core, remplaçant la configuration du Registre.Configuration files for PowerShell Core, replacing Registry configuration.

DESCRIPTION DÉTAILLÉELONG DESCRIPTION

Le powershell.config.json fichier contient des paramètres de configuration pour PowerShell Core.The powershell.config.json file contains configuration settings for PowerShell Core. PowerShell charge cette configuration au démarrage.PowerShell loads this configuration at startup. Les paramètres peuvent également être modifiés au moment de l’exécution.The settings can also be modified at runtime. Auparavant, ces paramètres étaient stockés dans le Registre Windows pour PowerShell, mais ils sont maintenant contenus dans un fichier pour permettre la configuration sur macOS et Linux.Previously, these settings were stored in the Windows Registry for PowerShell, but are now contained in a file to enable configuration on macOS and Linux.

Avertissement

Si le powershell.config.json fichier contient un code JSON non valide, impossible de démarrer une session interactive.If the powershell.config.json file contains invalid JSON PowerShell cannot start an interactive session. Si cela se produit, vous devez corriger le fichier de configuration.If this occurs, you must fix the configuration file.

Notes

Les clés non reconnues ou les valeurs non valides dans le fichier de configuration seront ignorées en mode silencieux.Unrecognized keys or invalid values in the configuration file will be silently ignored.

Configuration de AllUsers (partagée)AllUsers (shared) configuration

Un powershell.config.json fichier du $PSHOME répertoire définit la configuration de toutes les sessions PowerShell Core en cours d’exécution à partir de cette installation de PowerShell Core.A powershell.config.json file in the $PSHOME directory defines the configuration for all PowerShell Core sessions running from that PowerShell Core installation.

Notes

L' $PSHOME emplacement est défini comme le même répertoire que l’assembly System.Management.Automation.dll en cours d’exécution.The $PSHOME location is defined as the same directory as the executing System.Management.Automation.dll assembly. Cela s’applique également aux instances du kit de développement logiciel (SDK) PowerShell hébergé.This applies to hosted PowerShell SDK instances as well.

Configuration CurrentUser (par utilisateur)CurrentUser (per-user) configurations

Vous pouvez également configurer PowerShell par utilisateur en plaçant le fichier dans le répertoire de configuration de l’étendue utilisateur.You can also configure PowerShell on a per-user basis by placing the file in the user-scope configuration directory. Le répertoire de configuration utilisateur peut être trouvé entre les plateformes à l’aide de la commande Split-Path $PROFILE.CurrentUserCurrentHost .The user configuration directory can be found across platforms with the command Split-Path $PROFILE.CurrentUserCurrentHost.

Paramètres de configuration générauxGeneral configuration settings

ExecutionPolicyExecutionPolicy

Important

Cette configuration s’applique uniquement sur les plateformes Windows.This configuration only applies on Windows platforms.

Configure la stratégie d’exécution pour les sessions PowerShell, en déterminant les scripts qui peuvent être exécutés.Configures the execution policy for PowerShell sessions, determining what scripts can be run. Par défaut, PowerShell utilise la stratégie d’exécution existante.By default, PowerShell uses the existing execution policy.

Pour les configurations de AllUsers, cela définit la stratégie d’exécution de LocalMachine .For AllUsers configurations, this sets the LocalMachine execution policy. Pour les configurations CurrentUser, définit la stratégie d’exécution CurrentUser .For CurrentUser configurations, this sets the CurrentUser execution policy.

Notes

L' Set-ExecutionPolicy applet de commande modifie ce paramètre dans le fichier de configuration ALLUSERS quand il est appelé avec -Scope LocalMachine et modifie ce paramètre dans le fichier de configuration CurrentUser lorsqu’il est appelé avec -Scope CurrentUser .The Set-ExecutionPolicy cmdlet modifies this setting in the AllUsers configuration file when invoked with -Scope LocalMachine, and modifies this setting in the CurrentUser configuration file when invoked with -Scope CurrentUser.

"<shell-id>:ExecutionPolicy": "<execution-policy>"

Où :Where:

  • <shell-id> fait référence à l’ID de l’hôte PowerShell actuel.<shell-id> refers to the ID of the current PowerShell host. Pour PowerShell Core normal, il s’agit de Microsoft.PowerShell .For normal PowerShell Core, this is Microsoft.PowerShell. Dans une session PowerShell, vous pouvez la découvrir avec $ShellId .In any PowerShell session, you can discover it with $ShellId.
  • <execution-policy> fait référence à un nom de stratégie d’exécution valide.<execution-policy> refers to a valid execution policy name.

L’exemple suivant définit la stratégie d’exécution de PowerShell sur RemoteSigned .The following example sets the execution policy of PowerShell to RemoteSigned.

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

Dans Windows, les clés de Registre équivalentes se trouvent dans \SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell sous HKEY_LOCAL_MACHINE et HKEY_CURRENT_USER .In Windows, the equivalent registry keys can be found in \SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell under HKEY_LOCAL_MACHINE and HKEY_CURRENT_USER.

PSModulePathPSModulePath

Remplace un composant PSModulePath pour cette session PowerShell.Overrides a PSModulePath component for this PowerShell session. Si la configuration est pour l’utilisateur actuel, définit le chemin d’accès du module CurrentUser.If the configuration is for the current user, sets the CurrentUser module path. Si la configuration est pour tous les utilisateurs, définit le chemin d’accès du module AllUser.If the configuration is for all users, sets the AllUser module path.

Avertissement

La configuration d’un chemin d’accès au module AllUsers ou CurrentUser ici ne modifie pas l’emplacement d’installation d’étendue pour les modules PowerShellGet tels que install-module.Configuring an AllUsers or CurrentUser module path here will not change the scoped installation location for PowerShellGet modules like Install-Module. Ces applets de commande utilisent toujours les chemins de module par défaut .These cmdlets always use the default module paths.

Si aucune valeur n’est définie, la valeur par défaut du composant de chemin d’accès au module respectif sera utilisée.If no value is set, the default value for the respective module path component will be used. Pour plus d’informations sur ces valeurs par défaut, consultez about_Modules .See about_Modules for more details on these defaults.

Ce paramètre permet d’utiliser les variables d’environnement en les incorporant entre des % caractères, comme "%HOME%\Documents\PowerShell\Modules" , de la même façon que cmd le permet.This setting allows environment variables to be used by embedding them between % characters, like "%HOME%\Documents\PowerShell\Modules", in the same way as CMD allows. Cette syntaxe s’applique également à Linux et macOS.This syntax also applies on Linux and macOS. Consultez les exemples ci-dessous.See below for examples.

"PSModulePath": "<ps-module-path>"

Où :Where:

  • <ps-module-path> est le chemin d’accès absolu d’un répertoire de module.<ps-module-path> is the absolute path to a module directory. Pour toutes les configurations utilisateur, il s’agit du répertoire du module partagé AllUsers.For all user configurations, this is the AllUsers shared module directory. Pour les configurations utilisateur actuelles, il s’agit du répertoire du module CurrentUser.For current user configurations, this is CurrentUser module directory.

Cet exemple illustre une configuration PSModulePath pour un environnement Windows :This example shows a PSModulePath configuration for a Windows environment:

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

Cet exemple montre une configuration PSModulePath pour un environnement macOS ou Linux :This example shows a PSModulePath configuration for a macOS or Linux environment:

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

Cet exemple illustre l’incorporation d’une variable d’environnement dans une configuration PSModulePath.This example shows embedding an environment variable in a 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.Note that using the HOME environment variable and the / directory separator, this will work on Windows, macOS and Linux.

{
  "PSModulePath": "%HOME%/Documents/PowerShell/Modules"
}

Cet exemple illustre l’incorporation d’une variable d’environnement dans une configuration PSModulePath qui fonctionne uniquement sur macOS et Linux :This example shows embedding an environment variable in a PSModulePath configuration that will only work on macOS and Linux:

{
  "PSModulePath": "%XDG_CONFIG_HOME%/powershell/Modules"
}

Notes

Les variables PowerShell ne peuvent pas être incorporées dans les configurations PSModulePath.PowerShell variables cannot be embedded in PSModulePath configurations. Les configurations PSModulePath sur Linux et macOS respectent la casse.PSModulePath configurations on Linux and macOS are case-sensitive. Une configuration PSModulePath doit utiliser des séparateurs de répertoire valides pour la plateforme.A PSModulePath configuration must use valid directory separators for the platform. Sur macOS et Linux, cela signifie / .On macOS and Linux, this means /. Sur Windows, / et \ fonctionnent.On Windows, both / and \ will work.

ExperimentalFeaturesExperimentalFeatures

Noms des fonctionnalités expérimentales à activer dans PowerShell.The names of the experimental features to enable in PowerShell. Par défaut, aucune fonctionnalité expérimentale n’est activée.By default, no experimental features are enabled. La valeur par défaut est un tableau vide.The default value is an empty array.

"ExperimentalFeatures": ["<experimental-feature-name>", ...]

Où :Where:

  • <experimental-feature-name> nom d’une fonctionnalité expérimentale à activer.<experimental-feature-name> is the name of an experimental feature to enable.

L’exemple suivant active les fonctionnalités expérimentales PSImplicitRemoting et PSUseAbbreviationExpansion lors du démarrage de PowerShell.The following example enables the PSImplicitRemoting and PSUseAbbreviationExpansion experimental features when PowerShell starts up.

{
  "ExperimentalFeatures": [
    "PSImplicitRemotingBatching",
    "PSUseAbbreviationExpansion"
  ]
}

Pour plus d’informations sur les fonctionnalités expérimentales, consultez la RFC 29 de PowerShell.For more information on experimental features, see PowerShell RFC 29.

Configuration de la journalisation non-WindowsNon-Windows logging configuration

Important

Les options de configuration de cette section s’appliquent uniquement à macOS et Linux.The configuration options in this section only apply to macOS and Linux. La journalisation pour Windows est gérée par le observateur d’événements Windows.Logging for Windows is managed by the Windows Event Viewer.

La journalisation de PowerShell sur macOS et Linux peut être configurée dans le fichier de configuration PowerShell.PowerShell's logging on macOS and Linux can be configured in the PowerShell configuration file. Pour obtenir une description complète de la journalisation PowerShell pour les systèmes non-Windows, consultez à propos de la journalisation.For a full description of PowerShell logging for non-Windows systems, see About Logging.

LogIdentityLogIdentity

Important

Ce paramètre peut uniquement être utilisé dans macOS et Linux.This setting can only be used in macOS and Linux.

Définit le nom d’identité utilisé pour écrire dans le journal système.Sets the identity name used to write to the system log. La valeur par défaut est « PowerShell ».The default value is "powershell".

"LogIdentity": "<log-identity>"

Où :Where:

  • <log-identity> identité de la chaîne que PowerShell doit utiliser pour écrire dans syslog.<log-identity> is the string identity that PowerShell should use for writing to syslog.

Notes

Vous souhaiterez peut-être avoir différentes valeurs LogIdentity pour chaque instance différente de PowerShell que vous avez installée.You may want to have different LogIdentity values for each different instance of PowerShell you have installed.

Dans cet exemple, nous configurons LogIdentity pour une version préliminaire de PowerShell.In this example, we are configuring the LogIdentity for a preview release of PowerShell.

{
  "LogIdentity": "powershell-preview"
}

LogLevelLogLevel

Important

Ce paramètre peut uniquement être utilisé dans macOS et Linux.This setting can only be used in macOS and Linux.

Spécifie le niveau de gravité minimal auquel PowerShell doit se connecter.Specifies the minimum severity level at which PowerShell should log.

"LogLevel": "<log-level>|default"

Où :Where:

  • <log-level> est l’un des éléments suivants :<log-level> is one of:
    • AlwaysAlways
    • CritiqueCritical
    • ErrorError
    • AvertissementWarning
    • InformationnelInformational
    • CommentairesVerbose
    • DébogageDebug

Notes

La définition d’un niveau de journalisation active tous les niveaux de journal au-dessus de celui-ci.Setting a the log level enables all log levels above it.

L’affectation de la valeur par défaut à ce paramètre est interprétée comme la valeur par défaut.Setting this setting to default will be interpreted as the default value. La valeur par défaut est informatif .The default value is Informational .

L’exemple suivant définit la valeur sur Verbose .The following example sets the value to Verbose .

{
  "LogLevel": "Verbose"
}

LogChannelsLogChannels

Important

Ce paramètre peut uniquement être utilisé dans macOS et Linux.This setting can only be used in macOS and Linux.

Détermine les canaux de journalisation qui sont activés.Determines which logging channels are enabled.

"LogChannels": "<log-channel>,..."

Où :Where:

  • <log-channel> est l’un des éléments suivants :<log-channel> is one of:
    • Operational : journalise des informations de base sur les activités PowerShellOperational - logs basic information about PowerShell activities
    • Analyse-journalise des informations de diagnostic plus détailléesAnalytic - logs more detailed diagnostic information

La valeur par défaut est Operational .The default value is Operational . Pour activer les deux canaux, incluez les deux valeurs sous la forme d’une seule chaîne séparée par des virgules.To enable both channels, include both values as a single comma-separated string. Par exemple :For example:

{
  "LogChannels": "Operational,Analytic"
}

LogKeywordsLogKeywords

Important

Ce paramètre peut uniquement être utilisé dans macOS et Linux.This setting can only be used in macOS and Linux.

Détermine les parties de PowerShell qui sont journalisées.Determines which parts of PowerShell are logged. Par défaut, tous les mots clés de journal sont activés.By default, all log keywords are enabled. Pour activer plusieurs mots clés, répertoriez les valeurs dans une seule chaîne séparée par des virgules.To enable multiple keywords, list the values in a single comma-separated string.

"LogKeywords": "<log-keyword>,..."

Où :Where:

  • <log-keyword> est l’un des éléments suivants :<log-keyword> is one of:
    • Runspace-gestion de l’instance d’exécutionRunspace - runspace management
    • Pipeline-opérations de pipelinePipeline - pipeline operations
    • Gestion du protocole de communication par protocole, par exemple PSRPProtocol - communication protocol handling, such as PSRP
    • Transport-prise en charge de la couche transport, telle que SSHTransport - transport layer support, such as SSH
    • Fonctionnalités hôtes PowerShell hôtes, par exemple l’interaction de la consoleHost - PowerShell host functionality, for example console interaction
    • Applets de commande-applets de commande builtin PowerShellCmdlets -PowerShell builtin cmdlets
    • Sérialiseur-logique de sérialisationSerializer - serialization logic
    • Session-État de session PowerShellSession - PowerShell session state
    • ManagedPlugin-plug-in WSManManagedPlugin - WSMan plugin

Notes

Il est généralement recommandé de conserver cette valeur non définie, sauf si vous essayez de diagnostiquer un comportement spécifique dans une partie connue de PowerShell.It is generally advised to leave this value unset unless you are trying to diagnose a specific behavior in a known part of PowerShell. La modification de cette valeur réduit uniquement la quantité d’informations journalisées.Changing this value only decreases the amount of information logged.

Cet exemple limite la journalisation aux opérations d’instance d’exécution, à la logique de pipeline et à l’utilisation des applets de commande.This example limits the logging to runspace operations, pipeline logic, and cmdlet use. Tous les autres enregistrements sont omis.All other logging will be omitted.

"LogKeywords": "Runspace,Pipeline,Cmdlets"

Autres exemples de configurationsMore example configurations

Exemple de configuration de WindowsExample Windows configuration

Cette configuration a davantage de paramètres définis explicitement :This configuration has more settings explicitly set:

  • La stratégie d’exécution pour cette installation de PowerShell est AllSignedExecution policy for this PowerShell installation is AllSigned
  • Le chemin d’accès du module CurrentUser est défini sur un répertoire de module sur un lecteur partagéThe CurrentUser module path is set to a module directory on a shared drive
  • La PSImplicitRemotingBatching fonctionnalité expérimentale est activéeThe PSImplicitRemotingBatching experimental feature is enabled

Notes

Les ExecutionPolicy paramètres et ne PSModulePath fonctionnent que sur une plate-forme Windows, car le chemin d’accès du module utilise \ des ; caractères de séparation et et la stratégie d’exécution n’est pas Unrestricted (la seule stratégie autorisée sur les plateformes de type UNIX).The ExecutionPolicy and PSModulePath settings here would only work on a Windows platform, since the module path uses \ and ; separator characters and the execution policy is not Unrestricted (the only policy allowed on UNIX-like platforms).

{
  "Microsoft.PowerShell.ExecutionPolicy": "AllSigned",
  "PSModulePath": "Z:\\Marisol's Shared Drive\\Modules",
  "ExperimentalFeatures": ["PSImplicitRemotingBatching"],
}

Exemple de configuration non-WindowsExample non-Windows configuration

Cette configuration définit un certain nombre d’options qui fonctionnent uniquement dans macOS ou Linux :This configuration sets a number of options that only work in macOS or Linux:

  • Le chemin d’accès du module CurrentUser est défini sur un répertoire de module personnalisé dans $HOMEThe CurrentUser module path is set to a custom module directory in $HOME
  • La fonctionnalité expérimental PSImplicitRemotingBatching est activéeThe PSImplicitRemotingBatching experimental feature is enabled
  • Le niveau de journalisation PowerShell est défini sur Verbose , pour plus d’informations sur la journalisationThe PowerShell logging level is set to Verbose , for more logging
  • Cette installation de PowerShell écrit dans les journaux à l’aide de l’identité PowerShell d’hébergement .This PowerShell installation writes to the logs using the home-powershell identity.
{
  "PSModulePath": "%HOME%/.powershell/Modules",
  "ExperimentalFeatures": ["PSImplicitRemotingBatching"],
  "LogLevel": "Verbose",
  "LogIdentity": "home-powershell"
}

Voir aussiSee also

À propos des stratégies d’exécutionAbout Execution Policies

À propos des variables automatiquesAbout Automatic Variables