2009-09-23 8 views
12

J'ai un script PowerShell qui vérifie qu'un certain répertoire est sur le chemin (en regardant $ env: path). Il apparaît que $ env: path est chargé et étendu localement par chaque application au démarrage, et cette portée est transmise à toutes les applications enfants. Donc ... si quelqu'un ouvre Firefox, télécharge mon programme, l'exécute, reçoit un message indiquant qu'il doit changer son chemin, corrige le problème, puis réexécute le programme depuis la fenêtre de téléchargement de Firefox, il recevra le même message, sauf si ils démarrent mon programme depuis Explorer ou redémarrent Firefox.

Existe-t-il un moyen de recharger $ env: path dans mon script PowerShell afin qu'il récupère la valeur actuelle, comme si elle avait été ouverte à partir d'Explorer?

Répondre

7

Si vous couriez en dehors du contexte d'un navigateur je vous dire d'utiliser

[System.Environment]::SetEnvironmentVariable(string name, string value, EnvironmentVariableTarget target) 

changer la variable de chemin d'accès pour l'utilisateur. Ce troisième paramètre vous permet de spécifier Processus, Utilisateur ou Machine. Si vous spécifiez Utilisateur ou Machine, le changement est permanent et apparaîtra dans les blocs env de tous les programmes qui commencent après cela. Cependant, puisque vous utilisez le navigateur, je ne pense pas que vous seriez capable de le faire.

Si l'utilisateur modifie son chemin, ce changement sera disponible pour les futures instances du navigateur. Une autre option est de tester (Get-Command) pour l'application dont vous avez besoin dans le chemin et si vous ne pouvez pas le trouver, modifiez $env:Path vous-même dans le script chaque fois qu'il s'exécute. Autrement dit, à moins que vous ne sachiez quel devrait être le chemin.

+5

Non, c'est ce que je cherchais. [System.Environment] :: GetEnvironmentVariable ("PATH", "Machine") m'a donné le paramètre actuel du chemin, quelle que soit l'application à partir de laquelle mon script a été exécuté ou quand cette application a été ouverte. Merci pour l'aide. –

+0

très utile les gars. J'essayais d'installer le script mercurial et ensuite immédiatement cloner un dépôt et cela a fait l'affaire pour moi. –