2012-07-01 23 views
2

我試圖找到一種方法,可以在腳本和其他腳本/控制檯之間來回執行PowerShell腳本,而無需執行環境「泄漏」。在PowerShell腳本中創建/銷燬新環境

I.e.如果在調用腳本之前設置了環境變量,我不希望腳本看到該環境變量,並且如果在腳本中設置了環境變量,我不希望能夠從控制檯看到它之後。

我建立的PowerShell構建/編譯腳本調用vcvarsall.bat(獲得所有在Visual C++ 2010點的變量等進入環境),但我不希望環境vcvarsall.bat創建「泄漏」回到控制檯 - 我想每次都重新啓動而不關閉/重新打開PowerShell窗口。

回答

2

你可以通過調用腳本:

powershell.exe -file <PS1 File> 

當前變量將不會在PS1腳本,並在PS1腳本創建它退出之後將不可用的變量可用。

+0

需要說明的是,當您從另一個進程啓動一個進程時,新進程將在其創建時繼承其父進程的環境。這意味着在控制檯中創建的環境變量*將*出現在腳本環境中,儘管腳本中的任何環境變化都不會傳播回父節點(比較示例中的'dir'調用的輸出:'$ env :v1,$ env:v2 ='alpha','beta'; dir env:v *; powershell {$ env:v2,$ env:v3 ='beta2','gamma'; dir env:v *}; dir ENV:v *')。 –