2017-12-30 73 views
0

カスタムPowershellスクリプトを使用するVSTSビルド定義を設定しようとしています。私は2つの異なるビルド定義で使用できる2つの関数を持つBuildPackage.psm1モジュールファイルを作成しました。私は、これらの作業の1つを取得しようとしているし、モジュールのインポートタスクを設定した後、関数の1つを実行するタスクが続いています。カスタムPowershellモジュールをVSTSビルドタスクで使用する方法

私はこの場所に私のモジュールをコピーした:最初のタスクのために

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

を、モジュールをインポートするために、私は次のインラインスクリプトを使用してPowerShellのスクリプトタスクを追加しました:

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

インポートモジュールコマンドが実行され、動作するように表示されます。

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

プライベートエージェントを使用しているようです。したがって、にをコピーすることができます。その後、VSTSビルドで直接powershellモジュールを使用することができます。

まず、ローカルマシン(プライベートエージェント)にecho $env:PSModulePathを実行してパスを印刷できます。その後$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\ 

:それは下記のようにパスのリストを示します。

もう一度ビルドすることができます。これで、powershellモジュールはVSTSビルドで認識されます。

関連する問題