自托管代理Azure PowerShell(核心)-找不到模块

时间:2020-01-06 15:41:14

标签: azure-devops azure-powershell azure-devops-self-hosted-agent

我正在Azure DevOps中运行自托管Windows代理。我已经安装了PowerShell Core 6.2.3,并且作为管理员安装了Az模块,以便所有用户都可以使用它。

当我使用Azure PowerShell任务(V4)运行生成时-标记为“使用PowerShell Core”和Azure PowerShell的“最新版本”时,我收到以下消息:

==============================================================================
Task         : Azure PowerShell
Description  : Run a PowerShell script within an Azure environment
Version      : 4.159.3
Author       : Microsoft Corporation
Help         : [Learn more about this task](https://go.microsoft.com/fwlink/?LinkID=613749)
==============================================================================
Added TLS 1.2 in session.
Disconnect-AzureRmAccount -Scope Process -ErrorAction Stop
##[warning]Run Connect-AzureRmAccount to login.
##[error]Could not find the modules: 'Az.Accounts' with Version: ''. If the module was recently installed, retry after restarting the Azure Pipelines task agent.

如果我在托管代理上运行脚本,则可以正常工作。我不知道为什么它失败了。我认为构建代理在配置文件或环境下运行时会有所不同-但我不确定如何进行检查。

在构建代理上,如果我打开PSCore窗口并运行:

Get-Module Az -ListAvailable

它可以正确找到模块。

1 个答案:

答案 0 :(得分:0)

DevOps 代理很可能以不同的用户身份运行,并且尚未为该用户安装 Az 模块。假设代理作为服务运行,您可以通过运行 services.msc 来检查用户并查找“Azure Pipelines Agent”、“VSTS Agent”或“vstsagent.[orgname].[agentname]”[1]。

运行 Get-Module Az -ListAvailable 以查看模块的安装位置。 C:\Program Files\PowerShell\Modules 下的模块已为所有用户安装 [2]。

您可以通过以下方式为所有用户安装模块:

Install-Module -Name Az -Scope AllUsers

[1] https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-windows?view=azure-devops#run-as-a-service

[2] https://docs.microsoft.com/en-us/powershell/module/powershellget/install-module?view=powershell-7.1#parameters