2012-02-29 18 views
0

ビルドテンプレートにInvokeProcessアクティビティがあります。 PsExec.exeを%windir%\ system32 \フォルダーにビルドし、InvokeProcessアクティビティーのFileNameを "PsExec.exe"として指定し、引き数にいくつかのパラメーターを指定しました。しかし、ビルドが実行されると、エラー "File Not Found:PsExec"が発生します。 "%windir%\ system32 \ PsExec.exe"や "%windir%\ system32 \ PsExec.exe"のようなFileNamesも試しました。 ビルドマシンからの実行で「psexec」と入力すると、すべてが完璧に動作します。PsExec with Tfs Build

もう1つ。ビルドコントローラが実行されているマシンまたはビルドエージェントが実行されているマシンにPsExecを置くべきですか?

答えて

2

AgentScopeアクティビティ内でInvokeProcessを呼び出す場合は、そのファイルをビルド・エージェント・マシンに置く必要があります。それ以外の場合は、ビルド・コントローラー・マシン上にある必要があります。

あなたが推測したように、私たちは.NET FrameworkのProcessクラスを使用してプロセスを呼び出します。ファイル名はProcessStartInfoのFileNameプロパティに設定されています。このプロパティに必要な条件は、InvokeProcessで必要です。

最後に、リテラルパスC:\ Windows \ System32 \ PsExec.exeを使用してみましたか?Processオブジェクトがパスを取得できないような奇妙なことを除外しましたか?

+1

"AgentScopeアクティビティ内でInvokeProcessを呼び出すと、そのファイルをビルドエージェントマシンに配置する必要があります。そうでない場合は、ビルドコントローラマシン上に配置する必要があります。 - それは多くの助けになった!ありがとう! 私はコントローラマシンを構築するためのアクセス権がないので、たとえばPsExec.exeを共有フォルダに入れることはできますか?それは正しく動作するでしょうか? – user1016945

+0

おそらく、共有場所から実行可能ファイルを実行するには、リモートリソースの設定を有効にする必要があります。これはデフォルトでは有効になっていません。 –