Useful or not, from you.
ADM-TFS-Extension TFS Build Agent setup documentation?

Not really sure where else to post this question, if there's a better place, let me know.

I've installed the HP UFT extensions on the TFS server, no problem at all doing this.

So I try to push tests during a build process. I get a complaint about the absence of the UFT_LAUNCHER capability. I don't see any documentation on how to prepare the build agent box to get this capability. I RDP into the build agent box, install UFT and the appropriate tdconnect. I run some tests manually and all is well. I restart the build agent service and still no UFT_LAUNCHER capability. I manually add the capability and point it at the C:\Program Files (x86)\HP\Unified Functional Testing\bin directory (total guess). I run my build and I get the errors at the end of this post.

The first error about not finding bin/PSModule.dll. I see where it is looking in the specified _task folder, and yes, PSModule.dll does not exist in that directory at all.

Any help on this would be greatly appreciated! I need documentation on how to get this running.

2017-10-25T15:16:18.2237535Z ##[section]Starting: RunFromALM: 2017-10-25T15:16:18.2393770Z ============================================================================== 2017-10-25T15:16:18.2393770Z Task : UFT ALM Execution 2017-10-25T15:16:18.2393770Z Description : Execute UFT tests from ALM 2017-10-25T15:16:18.2393770Z Version : 1.0.0 2017-10-25T15:16:18.2393770Z Author : 2017-10-25T15:16:18.2393770Z Help : 2017-10-25T15:16:18.2393770Z ============================================================================== 2017-10-25T15:16:18.2706285Z Preparing task execution handler. 2017-10-25T15:16:21.7238046Z Executing the powershell script: E:\devagent\Agent1\_work\_tasks\RunFromALM_a571ae7c-e100-42e1-8ced-498b46029770\1.0.0\localTask.ps1 2017-10-25T15:16:22.1456599Z ##[error]System.IO.FileNotFoundException: The specified module '\bin\PSModule.dll' was not loaded because no valid module file was found in any module directory. 2017-10-25T15:16:22.2081612Z ##[error]System.Management.Automation.ParameterBindingValidationException: Cannot bind argument to parameter 'Path' because it is null. 2017-10-25T15:16:22.2081612Z at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input, Hashtable errorResults, Boolean enumerate) 2017-10-25T15:16:22.2081612Z at System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal[][] pipeElements, CommandBaseAst[] pipeElementAsts, CommandRedirection[][] commandRedirections, FunctionContext funcContext) 2017-10-25T15:16:22.2081612Z at System.Management.Automation.Interpreter.ActionCallInstruction6.Run(InterpretedFrame frame) 2017-10-25T15:16:22.2081612Z at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 2017-10-25T15:16:22.2081612Z at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 2017-10-25T15:16:22.2237861Z ##[error]System.Management.Automation.ParameterBindingValidationException: Cannot bind argument to parameter 'Path' because it is null. 2017-10-25T15:16:22.2237861Z at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input, Hashtable errorResults, Boolean enumerate) 2017-10-25T15:16:22.2237861Z at System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal[][] pipeElements, CommandBaseAst[] pipeElementAsts, CommandRedirection[][] commandRedirections, FunctionContext funcContext) 2017-10-25T15:16:22.2237861Z at System.Management.Automation.Interpreter.ActionCallInstruction6.Run(InterpretedFrame frame) 2017-10-25T15:16:22.2237861Z at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 2017-10-25T15:16:22.2237861Z at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 2017-10-25T15:16:22.2237861Z ##[error]System.Management.Automation.ParameterBindingValidationException: Cannot bind argument to parameter 'Path' because it is null. 2017-10-25T15:16:22.2237861Z at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input, Hashtable errorResults, Boolean enumerate) 2017-10-25T15:16:22.2237861Z at System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal[][] pipeElements, CommandBaseAst[] pipeElementAsts, CommandRedirection[][] commandRedirections, FunctionContext funcContext) 2017-10-25T15:16:22.2237861Z at System.Management.Automation.Interpreter.ActionCallInstruction6.Run(InterpretedFrame frame) 2017-10-25T15:16:22.2237861Z at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 2017-10-25T15:16:22.2237861Z at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 2017-10-25T15:16:22.2237861Z ##[error]System.Management.Automation.ParameterBindingValidationException: Cannot bind argument to parameter 'Path' because it is null. 2017-10-25T15:16:22.2237861Z at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input, Hashtable errorResults, Boolean enumerate) 2017-10-25T15:16:22.2237861Z at System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal[][] pipeElements, CommandBaseAst[] pipeElementAsts, CommandRedirection[][] commandRedirections, FunctionContext funcContext) 2017-10-25T15:16:22.2237861Z at System.Management.Automation.Interpreter.ActionCallInstruction6.Run(InterpretedFrame frame) 2017-10-25T15:16:22.2237861Z at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 2017-10-25T15:16:22.2237861Z at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 2017-10-25T15:16:22.7862935Z ##[error]System.Management.Automation.CommandNotFoundException: The term 'Invoke-RunFromAlmTask' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. 2017-10-25T15:16:22.7862935Z at System.Management.Automation.CommandDiscovery.LookupCommandInfo(String commandName, CommandTypes commandTypes, SearchResolutionOptions searchResolutionOptions, CommandOrigin commandOrigin, ExecutionContext context) 2017-10-25T15:16:22.7862935Z at System.Management.Automation.CommandDiscovery.LookupCommandProcessor(String commandName, CommandOrigin commandOrigin, Nullable1 useLocalScope) 2017-10-25T15:16:22.7862935Z at System.Management.Automation.ExecutionContext.CreateCommand(String command, Boolean dotSource) 2017-10-25T15:16:22.7862935Z at System.Management.Automation.PipelineOps.AddCommand(PipelineProcessor pipe, CommandParameterInternal[] commandElements, CommandBaseAst commandBaseAst, CommandRedirection[] redirections, ExecutionContext context) 2017-10-25T15:16:22.7862935Z at System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal[][] pipeElements, CommandBaseAst[] pipeElementAsts, CommandRedirection[][] commandRedirections, FunctionContext funcContext) 2017-10-25T15:16:22.7862935Z at System.Management.Automation.Interpreter.ActionCallInstruction6.Run(InterpretedFrame frame) 2017-10-25T15:16:22.7862935Z at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 2017-10-25T15:16:22.7862935Z ##[error]System.Management.Automation.ParameterBindingValidationException: Cannot bind argument to parameter 'Path' because it is null. 2017-10-25T15:16:22.7862935Z at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input, Hashtable errorResults, Boolean enumerate) 2017-10-25T15:16:22.7862935Z at System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal[][] pipeElements, CommandBaseAst[] pipeElementAsts, CommandRedirection[][] commandRedirections, FunctionContext funcContext) 2017-10-25T15:16:22.7862935Z at System.Management.Automation.Interpreter.ActionCallInstruction6.Run(InterpretedFrame frame) 2017-10-25T15:16:22.7862935Z at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 2017-10-25T15:16:22.7862935Z at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 2017-10-25T15:16:22.7862935Z ##[error]System.Management.Automation.ParameterBindingValidationException: Cannot bind argument to parameter 'Message' because it is null. 2017-10-25T15:16:22.7862935Z at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input, Hashtable errorResults, Boolean enumerate) 2017-10-25T15:16:22.7862935Z at System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal[][] pipeElements, CommandBaseAst[] pipeElementAsts, CommandRedirection[][] commandRedirections, FunctionContext funcContext) 2017-10-25T15:16:22.7862935Z at System.Management.Automation.Interpreter.ActionCallInstruction6.Run(InterpretedFrame frame) 2017-10-25T15:16:22.7862935Z at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 2017-10-25T15:16:22.8331890Z ##[error]System.Management.Automation.ParameterBindingValidationException: Cannot bind argument to parameter 'Path' because it is null. 2017-10-25T15:16:22.8331890Z at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input, Hashtable errorResults, Boolean enumerate) 2017-10-25T15:16:22.8331890Z at System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal[][] pipeElements, CommandBaseAst[] pipeElementAsts, CommandRedirection[][] commandRedirections, FunctionContext funcContext) 2017-10-25T15:16:22.8331890Z at System.Management.Automation.Interpreter.ActionCallInstruction6.Run(InterpretedFrame frame) 2017-10-25T15:16:22.8331890Z at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 2017-10-25T15:16:22.8331890Z at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 2017-10-25T15:16:22.8331890Z ##[error]System.Management.Automation.ParameterBindingValidationException: Cannot bind argument to parameter 'Path' because it is null. 2017-10-25T15:16:22.8331890Z at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input, Hashtable errorResults, Boolean enumerate) 2017-10-25T15:16:22.8331890Z at System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal[][] pipeElements, CommandBaseAst[] pipeElementAsts, CommandRedirection[][] commandRedirections, FunctionContext funcContext) 2017-10-25T15:16:22.8331890Z at System.Management.Automation.Interpreter.ActionCallInstruction6.Run(InterpretedFrame frame) 2017-10-25T15:16:22.8331890Z at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 2017-10-25T15:16:22.8331890Z at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 2017-10-25T15:16:22.8488084Z ##[error]PowerShell script completed with 10 errors. 2017-10-25T15:16:22.8488084Z ##[section]Finishing: RunFromALM:

That's a useful answer
Without any help

@thesrinu

  1. Unzip the UFT.zip file from this repo somewhere.
  2. Create a new System environment variable called UFT_Working with the folder path to your unzipped UFT.zip folder

Or just run the unpack.ps1 script that does it for you.