我修改了自定义构建过程模板以在构建服务器上执行 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.AsyncCodeActivity
1的 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,正如预期的那样。
以前有没有其他人遇到过这个问题?
非常感谢