2012-01-31 51 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

相关问题