2009-09-23 16 views
12

Ho uno script PowerShell che controlla che una determinata directory si trovi sul PERCORSO (guardando attraverso $ env: percorso). Sembra che $ env: il percorso sia caricato e localmente definito da ogni applicazione all'avvio e quell'ambito sia passato a qualsiasi applicazione figlia. Quindi ... se qualcuno apre Firefox, scarica il mio programma, lo avvia, riceve un messaggio che deve cambiare il percorso, risolve il problema, quindi esegue nuovamente il programma dalla finestra di download di Firefox, riceveranno lo stesso messaggio, a meno che iniziano il mio programma da Explorer o riavviano Firefox.

C'è un modo per ricaricare $ env: percorso nel mio script PowerShell in modo da ottenere il valore corrente, come se fosse stato aperto da Explorer?

risposta

7

Se si stesse eseguendo fuori del contesto di un browser vorrei dirti di utilizzare

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

per modificare la variabile Path per l'utente. Questo terzo parametro consente di specificare Processo, Utente o Macchina. Se si specifica Utente o Macchina, la modifica è permanente e verrà visualizzata nei blocchi env di tutti i programmi che iniziano dopo. Tuttavia, dal momento che si esegue all'interno del browser, non penso che sarebbe in grado di farlo.

Se l'utente modifica il percorso, tale modifica sarà disponibile per le istanze future del browser. Un'altra opzione è testare (Get-Command) per l'app di cui hai bisogno nel percorso e se non riesci a trovarla, modifica $env:Path nello script ogni volta che viene eseguito. Cioè, a meno che tu non sappia quale dovrebbe essere il percorso.

+5

No, questo è quello che stavo cercando. [System.Environment] :: GetEnvironmentVariable ("PATH", "Machine") mi ha ottenuto l'impostazione corrente del percorso, indipendentemente dall'applicazione da cui è stato eseguito lo script o quando è stata aperta. Grazie per l'aiuto. –

+0

ragazzi molto utili. Stavo cercando di installare script mercurial e poi ho clonato immediatamente un repository e questo ha fatto il trucco per me. –

Problemi correlati