2017-12-30 61 views
0

사용자 지정 Powershell 스크립트를 사용하는 VSTS 빌드 정의를 설정하려고합니다. 두 가지 다른 빌드 정의에서 사용할 수있는 두 가지 기능을 가진 BuildPackage.psm1 모듈 파일을 만들었습니다. 이러한 작업 중 하나를 얻으려고하고 모듈을 가져 오기위한 작업을 설정 한 다음 함수 중 하나를 실행하는 작업을 수행했습니다.VSTS 빌드 작업에서 사용자 지정 Powershell 모듈을 사용하는 방법

내가이 위치에 내 모듈을 복사 한 :

$env:PSModulePath = "$env:BUILD_SOURCESDIRECTORY\src\Tools\PSModules;$env:PSModulePath"
Import-Module -Name BuildFontPackage.psm1

: 모듈을 가져올 첫 번째 작업에 대한

.\src\Tools\PSModules\BuildFontPackage\BuildFontPackage.psm1

, 나는 다음과 같은 인라인 스크립트를 사용하여 PowerShell은 스크립트 작업을 추가 한

가져 오기 모듈 명령을 실행하며 작업을 나타납니다

VERBOSE: Loading module from path 'C:\BA\47\s\src\Tools\PSModules\BuildFontPackage\BuildFontPackage.psm1'.
VERBOSE: Exporting function 'New-Package'.
VERBOSE: Exporting function 'New-AllPackages'.
VERBOSE: Importing function 'New-AllPackages'.
VERBOSE: Importing function 'New-Package'.

: 내가 가져 오기 - 모듈에 -Verbose 매개 변수를 추가하면, 나는 다음과 같은 얻을

New-Package : The term 'New-Package' is not recognized as the name of a cmdlet, function, script file, or Process completed with exit code 0 and had 1 error(s) written to the error stream.

그것은 내 모듈이로드되지 않은 것처럼입니다 : 내가 모듈 내에서 새 패키지 기능을 사용하려고하면

그러나, 다음과 같은 작업에서, 나는이 오류가 발생합니다.

어떻게하면됩니까?

+0

'Get-Module -ListAvailable *'- 이것은 무엇을 반환합니까? –

+0

각 작업은 깨끗한 컨텍스트로 시작되며 이전에로드 된 모듈은 유지되지 않습니다. 스크립트 작업을 별도로하거나 별도의 인라인 스크립트 작업이있는 경우 이러한 각 작업에서 모듈을로드해야합니다. – jessehouwing

+0

이 경우 모듈을 가져 오는 데 사용하는 동일한 인라인 스크립트/태스크에서 모듈을 호출하기에 충분합니다. 그리고 더 복잡한 것이 포함되면, 모든 복잡성은 작업 정의에서 짧은 인라인 스크립트를 사용하여로드되는 모듈에 통합 될 수 있습니다. – Peter

답변

0

개인 에이전트를 사용중인 것 같습니다. 따라서 을 $env:PSModulePath에 복사 할 수 있습니다. 그러면 VSTS 빌드에서 powershell 모듈을 직접 사용할 수 있습니다.

먼저 로컬 컴퓨터 (개인 에이전트)에 echo $env:PSModulePath을 실행하여 경로를 인쇄 할 수 있습니다.

C:\Users\username\Documents\WindowsPowerShell\Modules;C:\Program Files\WindowsPowerShell\Modules;C: 
\windows\system32\WindowsPowerShell\v1.0\Modules\;c:\Program Files\Microsoft Security Client\MpPro 
vider\;C:\Program Files (x86)\Microsoft SQL Server\110\Tools\PowerShell\Modules\;C:\Program Files\ 
AppFabric 1.1 for Windows Server\PowershellModules;C:\Program Files\Microsoft System Center 2012 R 
2\Virtual Machine Manager\bin\psModules\;C:\Program Files\Microsoft System Center 2012 R2\Service 
Manager\PowerShell\;C:\Program Files\WindowsPowerShell\Modules\;C:\Program Files (x86)\Microsoft S 
DKs\Azure\PowerShell\ResourceManager\AzureResourceManager\;C:\Program Files (x86)\Microsoft SDKs\A 
zure\PowerShell\ServiceManagement\;C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\Storage\ 

그런 다음 $env:PSModulePath에서 경로의에 복사 : 그것은 아래로 경로의 목록을 보여줍니다.

이제 다시 빌드 할 수 있습니다. powershell 모듈은 VSTS 빌드로 통합되어야합니다.