使用Windows 2019自托管代理运行Azure DevOps多阶段YAML时遇Az.Accounts模块缺失错误
问题根源与解决方法
核心问题1:任务类型不匹配
你使用的AzurePowerShell@5任务是为PowerShell的Az模块设计的,会优先依赖Az模块完成身份验证,但你执行的却是AZ CLI命令(az webapp...)。即使安装了AZ CLI,该任务仍会尝试加载指定版本的Az.Accounts模块,从而触发报错。
核心问题2:Az模块版本不匹配
你执行Install-Module -Name Az -Scope AllUsers安装的是最新版Az模块,但任务指定的是5.1.1版本,最新版的Az.Accounts版本远高于5.1.1,导致任务找不到对应版本的模块。
具体解决步骤
方法一:改用适配AZ CLI的任务
将AzurePowerShell@5替换为AzureCLI@2任务,该任务专门用于执行AZ CLI命令,无需依赖Az模块:
- task: AzureCLI@2 displayName: 'Disconnect DEV Function App' inputs: azureSubscription: '$(DEVAzureSvcCon)' scriptType: 'pscore' scriptLocation: 'inlineScript' inlineScript: 'az webapp deployment source delete --resource-group $(DEVResourceGroup) --name $(DEVFunctionAppName)' failOnStandardError: true
方法二:修正AzurePowerShell任务配置(若坚持使用该任务)
- 安装指定版本的Az模块:
在代理服务器上打开与代理服务同位数的PowerShell(代理默认用32位,可打开C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe),以管理员身份执行:Install-Module -Name Az.Accounts -RequiredVersion 5.1.1 -Scope AllUsers -Force Install-Module -Name Az -RequiredVersion 5.1.1 -Scope AllUsers -Force - 重启Azure Pipelines代理服务:
在代理服务器的服务列表中找到Azure Pipelines Agent服务,右键选择重启,确保代理加载新安装的模块。 - 验证模块安装:
在同位数的PowerShell中执行以下命令,确认指定版本的模块存在:Get-Module -ListAvailable Az.Accounts | Where-Object Version -eq '5.1.1'
额外注意事项
- 自托管代理默认使用32位PowerShell,若手动安装模块时用的是64位PowerShell,代理可能无法找到模块,需确保安装环境位数一致。
- 检查代理服务运行账户的权限,确保该账户能访问
C:\Program Files\WindowsPowerShell\Modules(AllUsers范围模块的安装路径)。
内容的提问来源于stack exchange,提问作者Akira_Yam
相关产品推荐
相关产品推荐

