2012-12-19 13 views
12

psakeデプロイスクリプトでこの実行ファイルを正しく呼び出すことができません。psakeのexecを可変パスの実行ファイルに呼び出すにはどうすればよいですか?

私はこれを行う場合:

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の問題である場合は、その洞察を反映するために質問を修正してください。

+0

そのタグを編集してくれてありがとう - 以前の質問からローカルストレージに保存されました。 –

答えて

16

Classic PowerShellの問題。代わりにこれを試してみてください:

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

何がパイプラインの先頭でのPowerShellを与えていることは、それが忠実に評価する文字列式です:

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

PowerShellは、それはまた、表現などを評価し、コマンドを実行するだけでなくコンソールに印刷します。呼び出しオペレータ&を使用すると、実行するコマンドの名前(文字列内)または実行するスクリプトブロックのいずれかであることをPowerShellに伝えます。技術的には、. "some-command-name-or-path"も使用できます。唯一の違いは、PowerShellコマンドの場合、&はコマンドを実行する新しいスコープを作成し、.はコマンドスコープを作成しないことです。外部exeでは、あなたがどちらを使うのか分かりませんが、通常は&が使われます。

+0

ありがとう、男!あなたはそれを釘付け! Powershellのいくつかの良いドキュメント(書籍が含まれています)を教えてください。私は構文と、どのように物事が評価されるかによってかなり混乱しています。 –

+0

この無料試用版を試すhttp://rkeithhill.wordpress.com/2009/03/08/effective-windows-powershell-the-free-ebook/ –

関連する問題