如何导入PowerShell模块以供管道任务使用

时间:2019-06-26 20:56:14

标签: powershell azure-devops

我正在Azure DevOps中创建生成管道。我有一个PowerShell任务,该任务调用文件中的脚本-它不是“内联” PowerShell。该脚本需要Az.Accounts模块,因此我添加了Import-Module Az.Accounts。运行管道时,得到以下信息:

Import-Module : The specified module 'Az.Accounts' was not loaded because no valid module file was found in any module 
directory.
At D:\a\1\s\XXX\XXX\XXX.ps1:14 char:1
+ Import-Module Az.Accounts
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (Az.Accounts:String) [Import-Module], FileNotFoundException
    + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand

如何添加缺少的模块,以便脚本可以运行?

3 个答案:

答案 0 :(得分:1)

托管代理未安装Az模块,而是安装了较旧的AzureRM模块。

您应该可以使用Install-Module来安装它们。或者,您可以重写脚本以使用AzureRM

答案 1 :(得分:1)

将 Azure Devops 与托管的 windows-2019 映像一起使用时,我建议您使用“AzurePowerShell”任务而不是普通的“PowerShell”任务,版本为 @4 或更高。

documentation of this task can be found here.。向下滚动以查看与版本控制相关的选项。

语法和参数几乎与 PowerShell 任务相同,只是您不再需要在 Azure 中登录(您在参数中提供服务连接)。

您不需要做一些疯狂的事情,例如安装 Az 模块或卸载 AzureRM。如果您使用 AzurePowerShell 任务,则它可供您使用。

注意:不要在同一脚本中使用 Az 命令和 AzureMR(已弃用)命令。

答案 2 :(得分:0)

默认情况下,托管的Windows代理仅包含较旧的AzureRM模块。借助Az模块,Azure PowerShell现在与Windows上的PowerShell 5.1和PowerShell Core 6.x以及更高版本在所有受支持的平台(包括Windows)上兼容,macOS和Linux。这是最大也是最重要的变化。

您可以添加嵌入式Powershell任务来安装Az.Accounts模块。 enter image description here

请注意,如果您没有在脚本中添加-force参数,则会获得此信息。

User declined to install module (Az.Accounts).