Azure流水线执行PowerShell时New-AzureRmApiManagementContext未识别如何解决
是的,需要提前导入相关模块,同时你遇到的报错还有模块版本兼容性的问题,具体原因和修复方案如下:
问题根因
- 你使用的
New-AzureRmApiManagementContext属于微软已停止维护的AzureRM老旧模块,Ubuntu系统上运行的跨平台PowerShell Core默认不支持AzureRM模块,只有Azure门户内置的Cloud Shell做了特殊兼容适配,才能正常运行老旧的AzureRM命令。 - 即便是使用新版Az模块的对应命令,Azure流水线的Ubuntu运行环境默认也不会预装
Az.ApiManagement管理模块,缺少模块就会抛出「命令不识别」的报错。
修复方案(推荐迁移到新版Az模块)
直接调整YAML任务,添加模块安装导入逻辑,同时替换老旧的AzureRM命令为Az版命令即可:
steps: - task: AzurePowerShell@5 displayName: 'Azure PowerShell script: InlineScript' inputs: azureSubscription: '<sc>' ScriptType: InlineScript azurePowerShellVersion: LatestVersion pwsh: true # 适配Ubuntu系统的PowerShell Core环境 Inline: | # 提前安装并导入APIM管理模块 Install-Module -Name Az.ApiManagement -Force -AllowClobber -Scope CurrentUser Import-Module -Name Az.ApiManagement -Force Set-AzContext -SubscriptionId $(subId) # 替换为Az版的上下文创建命令 $apimContext = New-AzApiManagementContext -ResourceGroupName "$(rgName)" -ServiceName "$(serviceName)"
补充说明
- 安装模块时添加
-Scope CurrentUser参数可以规避Ubuntu环境下的权限不足问题,不需要管理员权限即可完成模块安装。 - 非常不建议继续适配AzureRM老旧模块,跨平台PowerShell对AzureRM的兼容支持极差,就算临时修复当前报错也容易出现其他未知问题。
内容的提问来源于stack exchange,提问作者prakashrajansakthivel
相关产品推荐
相关产品推荐

