2014-05-12 36 views
1

括號結果環境變量我有一個運行我的程序文件目錄下的可執行文件的PowerShell的(2.0)腳本,我使用一個環境變量引用的路徑:在「意外的標記」錯誤

Start-Process "$($env:ProgramFiles)\ProgramFolder\Executable.exe" 

這在我的x86機器上運行良好,但現在我試圖在x64機器上運行它。由於可執行文件是32位的,它位於下方的「C:\ Program Files文件(x86)的」,因此,我已經調整了我的腳本如下,因爲環境變量,我需要用的是ProgramFiles(x86)

Start-Process "$($env:ProgramFiles(x86))\ProgramFolder\Executable.exe" 

雖然我得到這個錯誤:?

意外令牌「(」在

那麼,如何引用一個環境變量因爲它包含括號表達式或語句

回答

3

你並不需要的子表達式$()在這種情況下:

"${env:ProgramFiles(x86)}\ProgramFolder\Executable.exe" 

輸出:

C:\Program Files (x86)\ProgramFolder\Executable.exe 

如果你仍然想使用一個子表達式,你可以指定包含的PowerShell語法一個變量名像這樣的字符:

"$(${env:ProgramFiles(x86)})\ProgramFolder\Executable.exe" 
+2

其實,基思,你_必須在這種情況下使用子表達式:'$ {env:ProgramFiles(x86)}'的值是'C:\ P rogram文件(x86)' - 注意左邊的文件之前的空間!你的第一個代碼片段不是訪問'$ {env:ProgramFiles(x86)}',而是''{env:ProgramFiles} +「(x86)」',它不包含那個非常重要的空間。 :-) –

+0

是的,沒有注意到失蹤的空間。 PowerShell在看到第一個paren時停止「讀取」變量名稱。這就是'{}'的用途。更新了答案。謝謝。 –