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”

输出编码:System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.InstalledUICulture.TextInfo.OEMCodePage)

现在每次我尝试执行构建时,都会收到以下错误:

异常消息:找不到文件:PowerShell(类型 FileNotFoundException) 异常堆栈跟踪:服务器堆栈跟踪:
在 Microsoft.TeamFoundation.Build.Workflow.Activities.InvokeProcess.ProcessWrapper.Start() 在 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) 在 System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage (IMessage msg, IMessageSink replySink)

在 [0] 处重新引发异常:在 System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(Object NotUsed, MessageData& msgData) 在 System.Func 2.EndInvoke(IAsyncResult result) at System.Activities.AsyncCodeActivity1的 System.Runtime.Remoting.Proxies.RealProxy.EndInvokeHelper(Message reqMsg, Boolean bProxyCase) .System.Activities.IAsyncCodeActivity.FinishExecution(AsyncCodeActivityContext context, IAsyncResult result) at System.Activities.AsyncCodeActivity.CompleteAsyncCodeActivityData.CompleteAsyncCodeActivityWorkItem.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager)

内部异常详细信息:

异常消息:系统找不到指定的文件(类型 Win32Exception)异常堆栈跟踪:在 System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) 在 Microsoft.TeamFoundation.Build.Workflow.Activities.InvokeProcess.ProcessWrapper.Start()

似乎构建不再能够将“powershell”命令与实际的 PowerShell 文件链接。

我已经手动进入构建服务器并在命令行中键入“powershell”,它启动了 PowerShell,正如预期的那样。

以前有没有其他人遇到过这个问题?

非常感谢

4

2 回答 2

5

在工作流程的 invokeprocess 步骤中添加 powershell.exe 的完整文件路径,它应该始终有效(我不相信环境设置)并且知道,以您自己的帐户登录服务器不等于构建在特定帐户下运行的服务器。

于 2013-02-11T12:08:06.063 回答
0

在我的情况下,部署 Windows 管理框架 3.0 后发生了同样的错误。它通过重新启动构建控制器和代理来解决。

于 2015-02-19T12:11:08.017 回答