Как да извикам exec в psake към изпълним файл с променлив път?

Изглежда не мога да извикам този изпълним файл правилно в моя скрипт за внедряване на 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, моля, не се колебайте да коригирате въпроса, за да отразите това прозрение.

I


person Josh Kodroff    schedule 19.12.2012    source източник


Отговори (1)


Класически проблем с PowerShell. Опитайте това вместо това:

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

PowerShell не само изпълнява команди, но и оценява изрази, напр.:

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

Това, което сте дали на PowerShell в началото на тръбопровода, е низов израз, който той вярно оценява и отпечатва на конзолата. Като използвате оператора за извикване &, вие казвате на PowerShell, че следното нещо е или името на команда (в низ), която трябва да бъде изпълнена, или скриптов блок, който трябва да бъде изпълнен. Технически можете също да използвате . "some-command-name-or-path". Единствената разлика е, че за командите на PowerShell & създава нов обхват за изпълнение на командата, а . не. За външни exes няма значение, доколкото мога да разбера кой използвате, но обикновено се използва &.

person Keith Hill    schedule 19.12.2012