2012-01-31 50 views
1

我正在使用powershell編寫發行腳本,並且需要調用自定義可執行文件並將一堆參數傳遞給可執行文件。這些參數中很少有一些是來自腳本中各種條件和執行的值。我發現在調用可執行文件時,這些值沒有得到評估。一些變量也需要作爲雙引號內的一系列參數傳入。下面顯示的是一個smaple呼叫運行其參數值在powershell中指定爲變量的可執行文件

mysample.exe「-forcerebuild '-release = $ CALC_VERSION''-projfile = sample.proj「-buildoptions =」/ P:AllowDevDependencies = TRUE/P:的AssemblyVersion = $ CALC_ASSEMBLY_VERSION/FLP:日誌文件= $ ENV:臨時 \ build.log/p:BaseIntermediateOutputPath = $ PROJECT_BASE \建立\/CLP:NOSUMMARY「」

所有需要進行評估的變量突出顯示。 exe預計所有選項提供給內部引用選項-buildoptions =「所有構建選項」

這些值似乎沒有得到評估。但是,如果我把構建選項作爲單獨的變量並打印出來,這些值似乎會得到評估。我是PowerShell的新手,非常感謝任何幫助。

回答

4

請注意,PowerShell不會在單引號字符串內進行變量擴展。例如:

$test_variable = "test" 
write-host "this is a $test_variable" 
write-host 'this is a $test_variable' 

將打印

this is a test 
this is a $test_variable 

而且,PowerShell有在傳遞參數給前男友的問題。有一個名爲EchoArgs.exe的實用程序,它附帶Powershell Community Extensions。使用它並將您的參數傳遞給它以查看它們是否傳遞正常。

+0

+1 - 單引號與雙引號是問題。 – JNK 2012-01-31 19:47:18

+0

感謝您的回覆。我按照你所說的刪除了單引號,並且變量正在被評估。 EchoArgs.exe工具非常酷,我可以看到所有的參數和值傳遞。現在,我看到-buildoptions =「所有構建選項」中的所有選項都將作爲單獨的參數進行評估。我如何保留double = quotes並仍然可以評估值? – praskris 2012-01-31 20:10:32

+0

@praskris - 你必須做一些像'「\'」$ test_variable \'「」' – manojlds 2012-01-31 20:14:41

相關問題