223 votes

Rechargez le chemin dans PowerShell

Si j'ai une instance de PowerShell ISE en cours d'exécution et que j'installe quelque chose qui modifie le PATH ou que je le modifie de quelque manière que ce soit en dehors de PowerShell, je dois redémarrer PowerShell pour qu'il voie la variable PATH mise à jour.

Existe-t-il un moyen de recharger le chemin à partir de PowerShell sans le redémarrer ?

7voto

Graham Points 99

Si votre chemin d'accès contient des variables d'environnement qui n'ont pas été définies au début de la session, vous devez également les développer :

$env:Path = [System.Environment]::ExpandEnvironmentVariables([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User"))

Pour moi, cela a été utile après l'installation de NVM qui définit et ajoute %NVM_HOME% au chemin.

Pour aller jusqu'au bout de la logique, vous pouvez utiliser cette fonction récursive pour développer le système :

function Expand-EnvironmentVariablesRecursively($unexpanded) {
    $previous = ''
    $expanded = $unexpanded
    while($previous -ne $expanded) {
        $previous = $expanded
        $expanded = [System.Environment]::ExpandEnvironmentVariables($previous)
    }
    return $expanded
}

Et ensuite utiliser :

$env:Path = Expand-EnvironmentVariablesRecursively([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User"))

J'ai a ouvert un dossier pour ajouter cette solution dans refreshenv de Chocolatey.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X