2016-09-09 2 views
2

Я использую стандартный шаг сборки TFS vNext для выполнения сценария PowerShell. Внутри скрипта я пытаюсь воспользоваться некоторыми функциями внутри стандартных модулей агента TFS.Как загрузить модуль PowerShell из пользовательского сценария в агенте vNext?

Упомянутый здесь: http://blog.majcica.com/2015/11/14/available-modules-for-tfs-2015-build-tasks/

Я видел следующие две строки во многих PowerShell скрипты, найденные на этапах сборки:

Import-Module "Microsoft.TeamFoundation.DistributedTask.Task.Internal" 
Import-Module "Microsoft.TeamFoundation.DistributedTask.Task.Common" 

Я пытался использовать те же строки в моем сценарии, однако Я получаю ошибку:

VERBOSE: Loading module from path 
'C:\TFS2015-Agent\Agent1\agent\agent\worker\Modules\Microsoft.TeamFoundation.DistributedTask.Task.Common\Microsoft.TeamFoundation.DistributedTask.Task.Common.dll'. 
Import-Module : Could not load file or assembly 'Microsoft.TeamFoundation.DistributedTask.Agent.Interfaces, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. 
The system cannot find the file specified. 
At C:\tfsVnBw1\3\s\Configuration\BuildScripts\CommonFunctions.ps1:25 char:5 
+ Import-Module "Microsoft.TeamFoundation.DistributedTask.Task.Common" - Error ... + CategoryInfo : NotSpecified: (:) [Import-Module], FileNotFoundException + FullyQualifiedErrorId : System.IO.FileNotFoundException,Microsoft.PowerShell.Commands.ImportModuleCommand 

Если я стараюсь не импортировать, он пишет что-то вроде:

The 'Find-Files' command was found in the module 'Microsoft.TeamFoundation.DistributedTask.Task.Common', 
but the module could not be loaded. For more information, run 'Import-Module Microsoft.TeamFoundation.DistributedTask.Task.Common'. 
At C:\tfsVnBw1\3\s\Configuration\BuildScripts\CommonFunctions.ps1:71 char:16 
+ $files = @(FindFiles $filePattern) 
+ ~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo : ObjectNotFound: (Find-Files:String) [FindFiles], CommandNotFoundException + FullyQualifiedErrorId : CouldNotAutoloadMatchingModule 

Невозможно использовать модули из «обычных» сценариев PowerShell, а не только из сценариев PowerShell, зарегистрированных в качестве фактического этапа сборки?

ответ

1

Попробуйте указать путь построения модуля агента, например:

# Import the Task.Common and Task.Internal dll that has all the cmdlets we need for Build 
$agentWorkerModulesPathRoot = "$($env:AGENT_HOMEDIRECTORY)\agent\worker" 
$agentDistributedTaskInterfacesModulePath = "$agentWorkerModulesPathRoot\Microsoft.TeamFoundation.DistributedTask.Agent.Interfaces.dll" 
$agentWorkerModulesPath = "$($env:AGENT_HOMEDIRECTORY)\agent\worker\Modules" 
$agentDistributedTaskCommonModulePath = "$agentWorkerModulesPath\Microsoft.TeamFoundation.DistributedTask.Task.Common\Microsoft.TeamFoundation.DistributedTask.Task.Common.dll" 

Write-Host "Importing VSTS Module $agentDistributedTaskInterfacesModulePath" 
Import-Module $agentDistributedTaskInterfacesModulePath 
Write-Host "Importing VSTS Module $agentDistributedTaskCommonModulePath" 
Import-Module $agentDistributedTaskCommonModulePath 
+1

Спасибо, я на самом деле, глядя на него прямо сейчас с этого сайта: http://www.brandonmartinez.com/2015/12/11/utilize-microsoft-teamfoundation-powershell-modules-in-vsovsts-custom-tasks/- Сообщает вам, работает ли это. – dynamokaj

+1

Это не работает больше – Mardoxx

Смежные вопросы