2012-12-19 12 views
12

Ich kann nicht scheinen, diese ausführbare Datei in meinem psake-Bereitstellungsskript richtig zu nennen.Wie rufe ich exec in psake zu einer ausführbaren Datei mit einem variablen Pfad auf?

Wenn ich dies tun:

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

Es ist einfach diese Ausgänge (und Aufruf ist eindeutig nicht die ausführbare Datei - nur den Wert dieses Ausdrucks ausgibt):

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

Aber wenn ich dies tun :

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

Ich bekomme die erwartete Ausgabe von der ausführbaren Datei.

Wie kann ich eine ausführbare Datei mit einer Variablen im Pfad zur ausführbaren Datei in psake korrekt aufrufen? Wenn es sich tatsächlich um ein PowerShell-Problem handelt, können Sie die Frage anhand dieser Informationen korrigieren.

I

+0

Danke für das Bearbeiten der Tags - sie wurden im lokalen Speicher von einer vorherigen Frage gespeichert, die ich abbrechen wollte. –

Antwort

16

Klassisches PowerShell-Problem. Versuchen Sie stattdessen:

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

Powershell nicht nur führt Befehle aus, sondern auch Ausdrücke wie zB auswertet:

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

Was Sie am Anfang einer Pipeline zu Powershell gegeben haben, ist ein String-Ausdruck, der sie auswertet treu und druckt auf die Konsole. Wenn Sie den Aufrufoperator & verwenden, teilen Sie PowerShell mit, dass das Folgende entweder der Name eines auszuführenden Befehls (in einer Zeichenfolge) oder eines auszuführenden Skriptblocks ist. Technisch könnte man auch . "some-command-name-or-path" verwenden. Der einzige Unterschied besteht darin, dass für PowerShell-Befehle & einen neuen Bereich zum Ausführen des Befehls in erstellt und . nicht. Für externe Exes macht es keinen Unterschied, soweit ich sagen kann, welches Sie verwenden, aber & wird normalerweise verwendet.

+0

Danke, Mann! Du hast den Nagel auf den Kopf getroffen! Können Sie auf eine gute Dokumentation (Bücher enthalten) auf Powershell verweisen? Ich bin ziemlich verwirrt von der Syntax und wie Zeug ausgewertet wird. –

+0

Sicher. Probieren Sie dieses Freebie http://rkeithhill.wordpress.com/2009/03/08/effective-windows-powershell-the-free-ebook/ –