2009-09-23 42 views
12

我有一個PowerShell腳本,檢查某個目錄是否在PATH上(通過查看$ env:路徑)。看起來$ env:path是在啓動時由每個應用程序加載和本地範圍的,並且該範圍被傳遞給任何子應用程序。所以......如果有人打開Firefox,下載我的程序,運行它,得到一條消息,說他們應該改變他們的路徑,修復問題,然後從Firefox下載窗口再次運行程序,他們會得到相同的信息,除非他們從資源管理器啓動我的程序或重啓Firefox。

有沒有辦法在我的PowerShell腳本中重新加載$ ​​env:path,這樣它會得到當前值,就像它從資源管理器打開一樣?

回答

7

如果你在瀏覽器環境之外運行我會告訴你用

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

改變路徑變量的用戶。第三個參數允許您指定進程,用戶或機器。如果您指定用戶或計算機,則更改是永久性的,並將出現在所有後來啓動的程序的env塊中。但是,由於您在瀏覽器中運行,我認爲您不能這樣做。

如果用戶更改他們的路徑,該更改將可供未來的瀏覽器實例使用。另一種選擇是在路徑中測試(Get-Command)所需的應用程序,如果找不到,則每次運行時都要在腳本中自行修改$env:Path。也就是說,除非你不知道路徑應該是什麼。

+5

不,這就是我一直在尋找的。 [System.Environment] :: GetEnvironmentVariable(「PATH」,「Machine」)爲我提供了路徑的當前設置,無論我的腳本是從哪個應用運行的還是應用何時打開。謝謝您的幫助。 – 2009-09-23 18:03:56

+0

非常有幫助的人。我正在嘗試安裝mercurial的腳本,然後立即克隆一個存儲庫,這對我來說是個竅門。 – 2013-07-26 01:59:17