2013-09-25 41 views
12

簡單問題:

如果我在32位系統的PowerShell腳本中使用$ {env:ProgramFiles(x86)}變量,它會返回「C:\ Program Files」還是未定義?

在x64系統上,它將在x64和x86模式下運行時映射到「C:\ Program Files(x86)」。我沒有32位系統進行測試,但我希望它將映射到「C:\ Program Files」文件夾,以便我可以使用它來引用任何系統上的x86程序。

+0

如果你正在開發這兩種架構,你應該真的測試兩者。 –

+0

我有一個x86環境的請求,但認爲這將在某個地方記錄。無法在任何地方找到它:-( –

+1

可能的重複[什麼是對PowerShell的x64與x86變異編程的最佳方式](http://stackoverflow.com/questions/602060/what-is-the-best -way-to-program-against-powershells-x64-vs-x86-variability) –

回答

17

${env:ProgramFiles(x86)}未在32位機器上定義。您可以根據$null進行測試來驗證。

+4

謝謝!我最終使用了來自http://stackoverflow.com/a/17647824/17373的-ne運算符「Null coalescing」來完成這個:'$ dir =($ {env:ProgramFiles(x86)},$ {env:ProgramFiles} -ne $ null)[0]'不漂亮,但是有效。 –

+2

這是聰明的代碼,但並不十分明顯。 - )我當然希望PowerShell實際上有?和?運營商。 https://connect.microsoft.com/PowerShell/feedback/details/53059/add-ternary-operator-to-script-language https://connect.microsoft.com/PowerShell/feedback/details/53061/add-operator對於腳本語言 –

+1

只是在32位系統上,環境變量沒有被定義,例如,如果你使用'dir env:'它不會出現。但是,如果您嘗試訪問不存在的變量,PowerShell將返回$ null。 – StephenD

相關問題