我正在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
它可以正确找到模块。
答案 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