Azure devops 在Azure Powershell任务中使用Azure CLI
我想创建一个Powershell脚本,它执行一些Azure devops 在Azure Powershell任务中使用Azure CLI,azure-devops,azure-pipelines,azure-powershell,azure-pipelines-release-pipeline,azure-cli,Azure Devops,Azure Pipelines,Azure Powershell,Azure Pipelines Release Pipeline,Azure Cli,我想创建一个Powershell脚本,它执行一些AzureRm…命令,然后执行一些Az命令。原因是某些命令只能通过Az使用 尝试在发布管道中执行这些脚本时,脚本总是失败,并出现以下错误: ERROR: Please run 'az login' to setup account. 在Azure CLI任务中执行Az命令可以正常工作,因为Az Login是由任务执行的 如果可能的话,我不想传递登录脚本所需的秘密。我宁愿退回到将脚本分为管道中的两个步骤 是否可以在Azure Powershell任
AzureRm…
命令,然后执行一些Az
命令。原因是某些命令只能通过Az
使用
尝试在发布管道中执行这些脚本时,脚本总是失败,并出现以下错误:
ERROR: Please run 'az login' to setup account.
在Azure CLI
任务中执行Az
命令可以正常工作,因为Az Login
是由任务执行的
如果可能的话,我不想传递登录脚本所需的秘密。我宁愿退回到将脚本分为管道中的两个步骤
是否可以在Azure Powershell
任务中使用Az
命令而不手动传递机密
最简单的例子:
- 创建一个新的发布管道
- 添加任务
Azure PowerShell
- 使用内联脚本
- 作为脚本,执行az帐户显示
az登录--服务主体--用户名“$(ServicePrincipal)”--密码“$(AzureDevOps ServicePrincipal Secret)”--租户“$(Azure_租户)”
我将SP和租户ID作为变量,并将SP的机密存储在Azure KeyVault中,链接到库变量组。您也可以将秘密存储在普通变量/变量组中,然后点击挂锁图标以保护它
如果SP可以访问同一租户中的多个订阅,您可能需要运行
az帐户集-s$(SubscriptionName)
。我已经准备好的短期解决方案是将ServicePrincipal信息传递到powershell脚本中,并手动执行az login
(与下面Bevan的回答相同)
我的长期解决方案是用“Az Powershell”命令替换所有Azure CLI调用。
幸运的是,大多数命令现在都可用
有几个命令没有等效的commandlet。但如果它们可以通过ARM使用,您可以使用Powershell找到一个替代命令
其中许多涉及使用New-AzResource/New-AzureRmResource
或Invoke-AzResourceAction/Invoke-AzureRmResourceAction
#AzureCLI
az cosmosdb列表键
#Powershell:
$keys=调用AzResourceAction-操作列表键`
-ResourceType“Microsoft.DocumentDb/databaseAccounts”-ApiVersion“2015-04-08”`
-ResourceGroupName$ResourceGroupName-名称$accountName
哪些命令?az cosmosdb列表键
和其他cosmos命令在我的情况下是必需的,但是az account show
也不起作用。试试这个?我会看看,谢谢!添加了一个带有az account show
的内嵌Azure CLI步骤,之后尝试在powershell任务中执行相同操作。。。不起作用。顺便说一句,您可以将--debug
传递给az
命令,以找出它在引擎盖下调用的确切API方法。然后,使用调用AzResourceAction
复制它。