我已经在Azure DevOps中的3.1.0版本的Azure内联脚本任务中运行了以下命令。
$accountInfo = az account show
$accountInfoObject = $accountInfo | ConvertFrom-Json
$subscriptionId = $accountInfoObject.id
$resourceGroup = "BZE1ERG01"
$functionName = "BAZE1EFA01"
$functionkeylist = az rest --method post --uri "https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.Web/sites/$functionName/host/default/listKeys?api-version=2018-11-01"
$keylistobject = $functionkeylist | ConvertFrom-Json
$functionKey = $keylistobject.functionKeys.default
$tmpSecret1 = ConvertTo-SecureString $functionKey -AsPlainText -Force
Set-AzKeyVaultSecret -VaultName 'azu-qa-keyvault' -Name functionkeysecret -SecretValue $tmpSecret1
DevOps屏幕截图
我遇到错误
您得到此消息是因为看起来您使用az cli
进行的呼叫未通过身份验证。跟随docs:
使用此任务可以在Azure环境中运行PowerShell脚本。使用提供的Azure资源对Azure上下文进行身份验证管理员服务连接。
[您应该使用普通的PowerShell Az模块,或者,如果您想使用az li,请考虑使用Azure CLI task,它将自动处理。您可以使用az keyvault secret set
在KeyVault中创建/更新机密。请查看documentation了解更多详细信息。当然,所有powershell代码在此任务中都是有效的。
[似乎其中一个的身份验证不适用于另一个。您也可以使用以下语法从任务中登录az cli:
az login --service-principal --username <app-id> --password <password> --tenant <tenant-id>