12

我似乎无法在我的 psake 部署脚本中正确调用此可执行文件。

如果我这样做:

exec { "$ArchiverOutputDir\NServiceBus.Host.exe /install" }

它只是输出这个(并且显然没有调用可执行文件 - 只是输出该表达式的值):

c:\ReloDotNet2_ServiceEndpoints\Archiver\NServiceBus.Host.exe /install

但如果我这样做:

exec { c:\ReloDotNet2_ServiceEndpoints\Archiver\NServiceBus.Host.exe /install }

我从可执行文件中得到了预期的输出。

如何正确调用 psake 中可执行文件路径中带有变量的可执行文件?如果这实际上是 PowerShell 问题,请随时更正问题以反映该见解。

一世

4

1 回答 1

16

经典的 PowerShell 问题。试试这个:

exec { & "$ArchiverOutputDir\NServiceBus.Host.exe" /install }

PowerShell 不仅执行命令,它还评估表达式,例如:

C:\PS> 2 + 2
4
C:\PS> "hello world"
hello world

您在管道开始时给 PowerShell 的是一个字符串表达式,它会忠实地评估并打印到控制台。通过使用 call operator &,您告诉 PowerShell 以下内容是要执行的命令的名称(在字符串中)或要执行的脚本块。从技术上讲,您也可以使用. "some-command-name-or-path". 唯一的区别是,对于 PowerShell 命令,&创建一个新的范围来执行命令而.不是。对于外部 exe,据我所知,您使用的是哪一个,但&通常使用它,这没有什么区别。

于 2012-12-19T23:28:11.920 回答