如何在psake中调用exec到具有可变路径的可执行文件?

Jos*_*off 12 powershell psake

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

如果我这样做:

exec { "$ArchiverOutputDir\NServiceBus.Host.exe /install" }
Run Code Online (Sandbox Code Playgroud)

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

c:\ReloDotNet2_ServiceEndpoints\Archiver\NServiceBus.Host.exe /install
Run Code Online (Sandbox Code Playgroud)

但如果我这样做:

exec { c:\ReloDotNet2_ServiceEndpoints\Archiver\NServiceBus.Host.exe /install }
Run Code Online (Sandbox Code Playgroud)

我从可执行文件中获得了预期的输出.

如何在psake中可执行文件的路径中使用变量正确调用可执行文件?如果这实际上是PowerShell问题,请随时更正问题以反映该洞察力.

一世

Kei*_*ill 16

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

exec { & "$ArchiverOutputDir\NServiceBus.Host.exe" /install }
Run Code Online (Sandbox Code Playgroud)

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

C:\PS> 2 + 2
4
C:\PS> "hello world"
hello world
Run Code Online (Sandbox Code Playgroud)

您在管道开头给PowerShell的是一个字符串表达式,它忠实地评估并打印到控制台.通过使用调用操作符&,您告诉PowerShell以下内容是要执行的命令的名称(在字符串中)或要执行的脚本块.从技术上讲,你也可以使用. "some-command-name-or-path".唯一的区别是,对于PowerShell命令,&创建一个新的范围来执行命令,而.不是.对于外部exes,就我可以分辨你使用哪一个但&通常使用它没有任何区别.