4

ビルドサーバーでPowershellを実行するようにカスタムビルドプロセステンプレートを変更しました。これは、SharePointソリューションの展開を自動化するいくつかのスクリプトを実行できるようにするためです。ビルドサーバーのPowershellバージョンを2.0から3.0にアップグレードするまで、すべてが正常に機能していました(SCVMM Admin Console 2012をインストールしていて、Powershell 3.0が前提条件であったため、これを行う必要がありました)。

ビルドテンプレート自体で、Microsoft.TeamFoundation.Build.Workflow.Activities.InvokeProcessワークフローアイテムを使用して、次のプロパティを使用してPowerShellコマンドを実行しています。

引数:String.Format( "" "&'{0}' -DropLocation'{1}' {2}" ""、ScriptFilename、BuildDetail.DropLocation、PostDropScript2Arguments)

ファイル名:「PowerShell」

OutputEncoding:System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.InstalledUICulture.TextInfo.OEMCodePage)

これで、ビルドを実行しようとするたびに、次のエラーが発生します。

例外メッセージ:ファイルが見つかりません:PowerShell(タイプFileNotFoundException)例外スタックトレース:サーバースタックトレース:
Microsoft.TeamFoundation.Build.Workflow.Activities.InvokeProcess.ProcessWrapper.Start()at Microsoft.TeamFoundation.Build.Workflow.Activities.InvokeProcess .InvokeProcessInternal.RunCommand(AsyncState state)at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md、Object [] args、Object server、Object []&outArgs)at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage (IMessage msg、IMessageSink replySink)

[0]で再スローされた例外:System.Runtime.Remoting.Proxies.RealProxy.EndInvokeHelper(Message reqMsg、Boolean bProxyCase)at System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(Object NotUsed、MessageData&msgData)at System.Func 2.EndInvoke(IAsyncResult result) at System.Activities.AsyncCodeActivity1 .System.Activities.IAsyncCodeActivity.FinishExecution(AsyncCodeActivityContext context、IAsyncResult result)at System.Activities.AsyncCodeActivity.CompleteAsyncCodeActivityData.CompleteAsyncCodeActivityWorkItem.Execute(ActivityExecutor executor、BookmarkManagerブックマークマネージャー)

内部例外の詳細:

例外メッセージ:システムは指定されたファイル(タイプWin32Exception)を見つけることができません例外スタックトレース:Microsoft.TeamFoundation.Build.Workflow.Activities.InvokeProcess.ProcessWrapper.Start()のSystem.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)

ビルドで「powershell」コマンドを実際のPowerShellファイルにリンクできなくなったようです。

手動でビルドサーバーにアクセスし、コマンドラインに「powershell」と入力すると、期待どおりにPowerShellが起動しました。

他の誰かが以前にこの問題を経験したことがありますか?

どうもありがとう

4

2 に答える 2

5

ワークフローのinvokeprocessステップでpowershell.exeに完全なファイルパスを追加すると、常に機能するはずです(このための環境設定は信頼できません)。また、自分のアカウントでサーバーにログインすることは、ビルドと同じではありません。特定のアカウントで実行されているサーバー。

于 2013-02-11T12:08:06.063 に答える
0

私の場合、Windows ManagmentFramework3.0を展開した後に同じエラーが発生しました。ビルドコントローラーとエージェントを再起動することで解決しました。

于 2015-02-19T12:11:08.017 に答える