À propos des variables d’environnementAbout Environment Variables

DESCRIPTION COURTESHORT DESCRIPTION

Décrit comment accéder aux variables d’environnement Windows dans PowerShell.Describes how to access Windows environment variables in PowerShell.

DESCRIPTION DÉTAILLÉELONG DESCRIPTION

Les variables d’environnement stockent des informations sur l’environnement du système d’exploitation.Environment variables store information about the operating system environment. Ces informations incluent des détails tels que le chemin d’accès du système d’exploitation, le nombre de processeurs utilisés par le système d’exploitation et l’emplacement des dossiers temporaires.This information includes details such as the operating system path, the number of processors used by the operating system, and the location of temporary folders.

Les variables d’environnement stockent les données utilisées par le système d’exploitation et d’autres programmes.The environment variables store data that is used by the operating system and other programs. Par exemple, la WINDIR variable d’environnement contient l’emplacement du répertoire d’installation de Windows.For example, the WINDIR environment variable contains the location of the Windows installation directory. Les programmes peuvent interroger la valeur de cette variable pour déterminer où se trouvent les fichiers de système d’exploitation Windows.Programs can query the value of this variable to determine where Windows operating system files are located.

PowerShell peut accéder aux variables d’environnement et les gérer dans toutes les plateformes de système d’exploitation prises en charge.PowerShell can access and manage environment variables in any of the supported operating system platforms. Le fournisseur d’environnement PowerShell simplifie ce processus en facilitant l’affichage et la modification des variables d’environnement.The PowerShell environment provider simplifies this process by making it easy to view and change environment variables.

Contrairement aux autres types de variables dans PowerShell, les variables d’environnement sont héritées par les processus enfants, tels que les tâches en arrière-plan locales et les sessions dans lesquelles les membres du module s’exécutent.Environment variables, unlike other types of variables in PowerShell, are inherited by child processes, such as local background jobs and the sessions in which module members run. Ainsi, les variables d’environnement sont bien adaptées au stockage des valeurs nécessaires dans les processus parents et enfants.This makes environment variables well suited to storing values that are needed in both parent and child processes.

Utilisation et modification des variables d’environnementUsing and changing environment variables

Sur Windows, les variables d’environnement peuvent être définies dans trois étendues :On Windows, environment variables can be defined in three scopes:

  • Portée de l’ordinateur (ou système)Machine (or System) scope
  • Étendue d’utilisateurUser scope
  • Portée du processusProcess scope

La portée du processus contient les variables d’environnement disponibles dans le processus en cours, ou la session PowerShell.The Process scope contains the environment variables available in the current process, or PowerShell session. Cette liste de variables est héritée du processus parent et est construite à partir des variables dans les étendues de l' ordinateur et de l' utilisateur .This list of variables is inherited from the parent process and is constructed from the variables in the Machine and User scopes. Les plateformes UNIX disposent uniquement de l’étendue du processus .Unix-based platforms only have the Process scope.

Vous pouvez afficher et modifier les valeurs des variables d’environnement sans utiliser une applet de commande à l’aide d’une syntaxe de variable avec le fournisseur de l’environnement.You can display and change the values of environment variables without using a cmdlet by using a variable syntax with the environment provider. Pour afficher la valeur d’une variable d’environnement, utilisez la syntaxe suivante :To display the value of an environment variable, use the following syntax:

$Env:<variable-name>

Par exemple, pour afficher la valeur de la WINDIR variable d’environnement, tapez la commande suivante à l’invite de commandes PowerShell :For example, to display the value of the WINDIR environment variable, type the following command at the PowerShell command prompt:

$Env:windir

Dans cette syntaxe, le signe dollar ( $ ) indique une variable, et le nom du lecteur ( Env: ) indique une variable d’environnement suivie du nom de la variable ( windir ).In this syntax, the dollar sign ($) indicates a variable, and the drive name (Env:) indicates an environment variable followed by the variable name (windir).

Lorsque vous modifiez des variables d’environnement dans PowerShell, la modification affecte uniquement la session active.When you change environment variables in PowerShell, the change affects only the current session. Ce comportement ressemble au comportement de la Set commande dans l’interface de commande Windows et Setenv à la commande dans les environnements UNIX.This behavior resembles the behavior of the Set command in the Windows Command Shell and the Setenv command in UNIX-based environments. Pour modifier des valeurs dans les portées de l’ordinateur ou de l’utilisateur, vous devez utiliser les méthodes de la classe System. Environment .To change values in the Machine or User scopes, you must use the methods of the System.Environment class.

Pour apporter des modifications aux variables de l’étendue de l’ordinateur, doit également avoir l’autorisation.To make changes to Machine-scoped variables, must also have permission. Si vous tentez de modifier une valeur sans autorisation suffisante, la commande échoue et PowerShell affiche une erreur.If you try to change a value without sufficient permission, the command fails and PowerShell displays an error.

Vous pouvez modifier les valeurs des variables sans utiliser une applet de commande à l’aide de la syntaxe suivante :You can change the values of variables without using a cmdlet using the following syntax:

$Env:<variable-name> = "<new-value>"

Par exemple, pour ajouter ;c:\temp à la valeur de la Path variable d’environnement, utilisez la syntaxe suivante :For example, to append ;c:\temp to the value of the Path environment variable, use the following syntax:

$Env:Path += ";c:\temp"

Sur Linux ou MacOS, le signe deux-points ( : ) dans la commande sépare le nouveau chemin d’accès du chemin d’accès qui le précède dans la liste.On Linux or MacOS, the colon (:) in the command separates the new path from the path that precedes it in the list.

$Env:PATH += ":/usr/local/temp"

Vous pouvez également utiliser les applets de commande Item, telles que Set-Item , Remove-Item et Copy-Item pour modifier les valeurs des variables d’environnement.You can also use the Item cmdlets, such as Set-Item, Remove-Item, and Copy-Item to change the values of environment variables. Par exemple, pour utiliser l' Set-Item applet de commande pour ajouter ;c:\temp à la valeur de la Path variable d’environnement, utilisez la syntaxe suivante :For example, to use the Set-Item cmdlet to append ;c:\temp to the value of the Path environment variable, use the following syntax:

Set-Item -Path Env:Path -Value ($Env:Path + ";C:\Temp")

Dans cette commande, la valeur est placée entre parenthèses afin qu’elle soit interprétée comme une unité.In this command, the value is enclosed in parentheses so that it is interpreted as a unit.

Variables d’environnement qui stockent des préférencesEnvironment variables that store preferences

Les fonctionnalités PowerShell peuvent utiliser des variables d’environnement pour stocker les préférences de l’utilisateur.PowerShell features can use environment variables to store user preferences. Ces variables fonctionnent comme des variables de préférence, mais elles sont héritées par les sessions enfants des sessions dans lesquelles elles sont créées.These variables work like preference variables, but they are inherited by child sessions of the sessions in which they are created. Pour plus d’informations sur les variables de préférence, consultez about_Preference_Variables.For more information about preference variables, see about_preference_variables.

Les variables d’environnement qui stockent les préférences sont les suivantes :The environment variables that store preferences include:

  • PSExecutionPolicyPreferencePSExecutionPolicyPreference

    Stocke la stratégie d’exécution définie pour la session active.Stores the execution policy set for the current session. Cette variable d’environnement existe uniquement lorsque vous définissez une stratégie d’exécution pour une seule session.This environment variable exists only when you set an execution policy for a single session. Vous pouvez le faire de deux manières différentes.You can do this in two different ways.

    • Démarrez une session à partir de la ligne de commande à l’aide du paramètre ExecutionPolicy pour définir la stratégie d’exécution de la session.Start a session from the command line using the ExecutionPolicy parameter to set the execution policy for the session.

    • Utilisez l'applet de commande Set-ExecutionPolicy.Use the Set-ExecutionPolicy cmdlet. Utilisez le paramètre scope avec la valeur « Process ».Use the Scope parameter with a value of "Process".

      Pour plus d’informations, consultez about_Execution_Policies.For more information, see about_Execution_Policies.

  • PSModuleAnalysisCachePathPSModuleAnalysisCachePath

    PowerShell vous permet de contrôler le fichier utilisé pour mettre en cache les données relatives aux modules et à leurs applets de commande.PowerShell provides control over the file that is used to cache data about modules and their cmdlets. Le cache est lu au démarrage lors de la recherche d’une commande et est écrit sur un thread d’arrière-plan quelque temps après l’importation d’un module.The cache is read at startup while searching for a command and is written on a background thread sometime after a module is imported.

    L’emplacement par défaut du cache est le suivant :Default location of the cache is:

    • Windows PowerShell 5.1 : $env:LOCALAPPDATA\Microsoft\Windows\PowerShellWindows PowerShell 5.1: $env:LOCALAPPDATA\Microsoft\Windows\PowerShell
    • PowerShell 6,0 et versions ultérieures : $env:LOCALAPPDATA\Microsoft\PowerShellPowerShell 6.0 and higher: $env:LOCALAPPDATA\Microsoft\PowerShell
    • Valeur non-Windows par défaut : ~/.cache/powershellNon-Windows default: ~/.cache/powershell

    Le nom de fichier par défaut du cache est ModuleAnalysisCache .The default filename for the cache is ModuleAnalysisCache. Lorsque plusieurs instances de PowerShell sont installées, le nom de fichier inclut un suffixe hexadécimal afin qu’il existe un nom de fichier unique par installation.When you have multiple instances of PowerShell installed, the filename includes a hexadecimal suffix so that there is a a unique filename per installation.

    Notes

    Si la découverte de commande ne fonctionne pas correctement, par exemple IntelliSense affiche des commandes qui n’existent pas, vous pouvez supprimer le fichier cache.If command discovery isn't working correctly, for example Intellisense shows commands that don't exist, you can delete the cache file. Le cache est recréé la prochaine fois que vous démarrez PowerShell.The cache is recreated the next time you start PowerShell.

    Pour modifier l’emplacement par défaut du cache, définissez la variable d’environnement avant de Démarrer PowerShell.To change the default location of the cache, set the environment variable before starting PowerShell. Les modifications apportées à cette variable d’environnement affectent uniquement les processus enfants.Changes to this environment variable only affect child processes. La valeur doit nommer un chemin complet (y compris le nom de fichier) où PowerShell est autorisé à créer et à écrire des fichiers.The value should name a full path (including filename) that PowerShell has permission to create and write files.

    Pour désactiver le cache de fichiers, vous pouvez affecter à cette valeur un emplacement non valide, par exemple :To disable the file cache, set this value to an invalid location, for example:

    # `NUL` here is a special device on Windows that cannot be written to,
    # on non-Windows you would use `/dev/null`
    $env:PSModuleAnalysisCachePath = 'NUL'
    

    Cela définit le chemin d’accès à l’appareil nul .This sets the path to the NUL device. PowerShell ne peut pas écrire dans le chemin d’accès, mais aucune erreur n’est retournée.PowerShell can't write to the path but no error is returned. Vous pouvez voir les erreurs signalées à l’aide d’un suivi :You can see the errors reported using a tracer:

    Trace-Command -PSHost -Name Modules -Expression { Import-Module Microsoft.PowerShell.Management -Force }
    
  • PSDisableModuleAnalysisCacheCleanupPSDisableModuleAnalysisCacheCleanup

    Lors de l’écriture du cache d’analyse de module, PowerShell recherche les modules qui n’existent plus afin d’éviter un cache trop volumineux.When writing out the module analysis cache, PowerShell checks for modules that no longer exist to avoid an unnecessarily large cache. Parfois, ces contrôles ne sont pas souhaitables, auquel cas vous pouvez les désactiver en définissant cette valeur de variable d’environnement sur 1 .Sometimes these checks are not desirable, in which case you can turn them off by setting this environment variable value to 1.

    La définition de cette variable d’environnement prend effet immédiatement dans le processus actuel.Setting this environment variable takes effect immediately in the current process.

  • PSModulePathPSModulePath

    La $env:PSModulePath variable d’environnement contient une liste d’emplacements de dossiers dans lesquels rechercher des modules et des ressources.The $env:PSModulePath environment variable contains a list of folder locations that are searched to find modules and resources.

    Par défaut, les emplacements effectifs affectés à $env:PSModulePath sont les suivants :By default, the effective locations assigned to $env:PSModulePath are:

    • Emplacements à l’ensemble du système : ces dossiers contiennent des modules fournis avec PowerShell.System-wide locations: These folders contain modules that ship with PowerShell. Les modules sont stockés à l' $PSHOME\Modules emplacement.The modules are store in the $PSHOME\Modules location. Il s’agit également de l’emplacement où sont installés les modules de gestion Windows.Also, This is the location where the Windows management modules are installed.

    • Modules installés par l’utilisateur : il s’agit de modules installés par l’utilisateur.User-installed modules: These are modules installed by the user. Install-Module possède un paramètre d' étendue qui vous permet de spécifier si le module est installé pour l’utilisateur actuel ou pour tous les utilisateurs.Install-Module has a Scope parameter that allows you to specify whether the module is installed for the current user or for all users. Pour plus d’informations, consultez install-module.For more information, see Install-Module.

      • Sur Windows, l’emplacement de l’étendue CurrentUser propre à l’utilisateur est le $HOME\Documents\PowerShell\Modules dossier.On Windows, the location of the user-specific CurrentUser scope is the $HOME\Documents\PowerShell\Modules folder. L’emplacement de l’étendue ALLUSERS est $env:ProgramFiles\PowerShell\Modules .The location of the AllUsers scope is $env:ProgramFiles\PowerShell\Modules.
      • Sur les systèmes non-Windows, l’emplacement de l’étendue CurrentUser propre à l’utilisateur est le $HOME/.local/share/powershell/Modules dossier.On non-Windows systems, the location of the user-specific CurrentUser scope is the $HOME/.local/share/powershell/Modules folder. L’emplacement de l’étendue ALLUSERS est /usr/local/share/powershell/Modules .The location of the AllUsers scope is /usr/local/share/powershell/Modules.

    En outre, les programmes d’installation qui installent des modules dans d’autres répertoires, tels que le répertoire Program Files, peuvent ajouter leurs emplacements à la valeur de $env:PSModulePath .In addition, setup programs that install modules in other directories, such as the Program Files directory, can append their locations to the value of $env:PSModulePath.

    Pour plus d’informations, consultez about_PSModulePath.For more information, see about_PSModulePath.

Gestion des variables d’environnementManaging environment variables

PowerShell offre plusieurs méthodes différentes pour la gestion des variables d’environnement.PowerShell provides several different methods for managing environment variables.

  • Lecteur du fournisseur de l’environnementThe Environment provider drive
  • Applets de commande ItemThe Item cmdlets
  • Classe .NET System. EnvironmentThe .NET System.Environment class
  • Sur Windows, le panneau de configuration systèmeOn Windows, the System Control Panel

Utilisation du fournisseur d’environnementUsing the Environment provider

Chaque variable d’environnement est représentée par une instance de la classe System. Collections. DictionaryEntry .Each environment variable is represented by an instance of the System.Collections.DictionaryEntry class. Dans chaque objet DictionaryEntry , le nom de la variable d’environnement est la clé du dictionnaire.In each DictionaryEntry object, the name of the environment variable is the dictionary key. La valeur de la variable est la valeur du dictionnaire.The value of the variable is the dictionary value.

Pour afficher les propriétés et les méthodes de l’objet qui représente une variable d’environnement dans PowerShell, utilisez l’applet de commande Get-Member .To display the properties and methods of the object that represents an environment variable in PowerShell, use the Get-Member cmdlet. Par exemple, pour afficher les méthodes et les propriétés de tous les objets du Env: lecteur, tapez :For example, to display the methods and properties of all the objects in the Env: drive, type:

Get-Item -Path Env:* | Get-Member

Le fournisseur d’environnement PowerShell vous permet d’accéder aux variables d’environnement dans un lecteur PowerShell (le Env: lecteur).The PowerShell Environment provider lets you access environment variables in a PowerShell drive (the Env: drive). Ce lecteur ressemble plus à un lecteur du système de fichiers.This drive looks much like a file system drive. Pour accéder au Env: lecteur, tapez :To go to the Env: drive, type:

Set-Location Env:

Utilisez les applets de commande content pour récupérer ou définir les valeurs d’une variable d’environnement.Use the Content cmdlets to get or set the values of an environment variable.

PS Env:\> Set-Content -Path Test -Value 'Test value'
PS Env:\> Get-Content -Path Test
Test value

Vous pouvez afficher les variables d’environnement dans le Env: lecteur à partir de n’importe quel autre lecteur PowerShell, et vous pouvez accéder au Env: lecteur pour afficher et modifier les variables d’environnement.You can view the environment variables in the Env: drive from any other PowerShell drive, and you can go into the Env: drive to view and change the environment variables.

Utilisation des applets de commande ItemUsing Item cmdlets

Lorsque vous faites référence à une variable d’environnement, tapez le Env: nom du lecteur, suivi du nom de la variable.When you refer to an environment variable, type the Env: drive name followed by the name of the variable. Par exemple, pour afficher la valeur de la COMPUTERNAME variable d’environnement, tapez :For example, to display the value of the COMPUTERNAME environment variable, type:

Get-ChildItem Env:Computername

Pour afficher les valeurs de toutes les variables d’environnement, tapez :To display the values of all the environment variables, type:

Get-ChildItem Env:

Étant donné que les variables d’environnement n’ont pas d’éléments enfants, la sortie de Get-Item et Get-ChildItem est la même.Because environment variables do not have child items, the output of Get-Item and Get-ChildItem is the same.

Par défaut, PowerShell affiche les variables d’environnement dans l’ordre dans lequel elles les récupère.By default, PowerShell displays the environment variables in the order in which it retrieves them. Pour trier la liste des variables d’environnement par nom de variable, dirigez la sortie d’une Get-ChildItem commande vers l’applet de commande Sort-Object .To sort the list of environment variables by variable name, pipe the output of a Get-ChildItem command to the Sort-Object cmdlet. Par exemple, à partir de n’importe quel lecteur PowerShell, tapez :For example, from any PowerShell drive, type:

Get-ChildItem Env: | Sort Name

Vous pouvez également accéder au lecteur à l' Env: aide de l’applet de commande Set-Location :You can also go into the Env: drive by using the Set-Location cmdlet:

Set-Location Env:

Lorsque vous êtes dans le Env: lecteur, vous pouvez omettre le Env: nom du lecteur dans le chemin d’accès.When you are in the Env: drive, you can omit the Env: drive name from the path. Par exemple, pour afficher toutes les variables d’environnement, tapez :For example, to display all the environment variables, type:

PS Env:\> Get-ChildItem

Pour afficher la valeur de la COMPUTERNAME variable à partir du Env: lecteur, tapez :To display the value of the COMPUTERNAME variable from within the Env: drive, type:

PS Env:\> Get-ChildItem ComputerName

Enregistrement des modifications apportées aux variables d’environnementSaving changes to environment variables

Pour apporter une modification permanente à une variable d’environnement sur Windows, utilisez le panneau de configuration système.To make a persistent change to an environment variable on Windows, use the System Control Panel. Sélectionnez paramètres système avancés .Select Advanced System Settings . Sous l’onglet avancé , cliquez sur variable d’environnement... . Vous pouvez ajouter ou modifier des variables d’environnement existantes dans les étendues utilisateur et système (ordinateur).On the Advanced tab, click Environment Variable... . You can add or edit existing environment variables in the User and System (Machine) scopes. Windows écrit ces valeurs dans le registre afin qu’elles soient conservées entre les sessions et les redémarrages du système.Windows writes these values to the Registry so that they persist across sessions and system restarts.

Vous pouvez également ajouter ou modifier des variables d’environnement dans votre profil PowerShell.Alternately, you can add or change environment variables in your PowerShell profile. Cette méthode fonctionne pour n’importe quelle version de PowerShell sur n’importe quelle plateforme prise en charge.This method works for any version of PowerShell on any supported platform.

Utilisation des méthodes System. EnvironmentUsing System.Environment methods

La classe System. Environment fournit des méthodes GetEnvironmentVariable et SetEnvironmentVariable ne contient qui vous permettent de spécifier la portée de la variable.The System.Environment class provides GetEnvironmentVariable and SetEnvironmentVariable methods that allow you to specify the scope of the variable.

L’exemple suivant utilise la méthode GetEnvironmentVariable pour récupérer le paramètre de l’ordinateur de PSModulePath et la méthode SetEnvironmentVariable ne contient pour ajouter le C:\Program Files\Fabrikam\Modules chemin d’accès à la valeur.The following example uses the GetEnvironmentVariable method to get the machine setting of PSModulePath and the SetEnvironmentVariable method to add the C:\Program Files\Fabrikam\Modules path to the value.

$path = [Environment]::GetEnvironmentVariable('PSModulePath', 'Machine')
$newpath = $path + ';C:\Program Files\Fabrikam\Modules'
[Environment]::SetEnvironmentVariable("PSModulePath", $newpath, 'Machine')

Pour plus d’informations sur les méthodes de la classe System. Environment , consultez méthodes d’environnement.For more information about the methods of the System.Environment class, see Environment Methods.

VOIR AUSSISEE ALSO