Azure DevOps Linux代理运行PowerShell无法识别Get-AzSubscription报错咨询
问题原因
- Ubuntu-latest托管代理默认仅预装了Azure CLI(即你在Bash中使用的
az命令工具),并未预装PowerShell的Az模块,二者是完全独立的Azure操作工具,因此az命令可正常运行不代表Az PowerShell cmdlet可用。 - 你使用的
Get-AzSubscription属于Az.Accounts模块下的cmdlet,运行前必须先在代理环境中安装对应模块。
修复方案
在现有PowerShell inline脚本开头添加模块安装逻辑,你也可以选择拆分出单独的前置步骤来安装模块,修改后的管道示例如下:
trigger: - main pool: vmImage: 'ubuntu-latest' steps: - task: AzureCLI@2 inputs: azureSubscription: sp-test scriptType: pscore scriptLocation: 'inlineScript' inlineScript: | # 安装所需的Az模块,仅安装Az.Accounts可节省运行时间,也可替换为Install-Module -Name Az安装完整模块 Install-Module -Name Az.Accounts -Scope CurrentUser -Repository PSGallery -Force -AllowClobber # 导入模块 Import-Module Az.Accounts # 执行你的业务逻辑 $Subscriptions = Get-AzSubscription # 后续逻辑 displayName: 'Run Powershell with Az Module'
小提示:如果对管道运行速度有要求,建议只安装业务需要的子模块,不要安装完整的Az全量模块,可减少30秒以上的安装耗时。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

