Мы осуществляем передачу данных в Azure с помощью Azure DevOps Pipeline.
Мы пытаемся запустить следующую команду как часть задачи внутри файла azure-pipelines.yml:
az ad app list --all
Это работает в Azure CLI без необходимости входа в систему, но не в AzurePowerShell.
Вот раздел из файла YAML для задачи Azure CLI:
- task: AzureCLI@2
displayName: Azure CLI - Deploy bicep files
inputs:
azureSubscription: $(serviceConnectionName)
scriptType: bash
scriptLocation: inlineScript
useGlobalConfig: false
inlineScript: |
az ad app list --all
Вот раздел YAML для PowerShell:
- task: AzurePowerShell@5
inputs:
azureSubscription: $(serviceConnectionName)
azurePowerShellVersion: LatestVersion
ScriptType: 'InlineScript'
Inline: |
az ad app list --all
При работе под PowerShell ошибка в журнале конвейера выглядит следующим образом:
ERROR: Please run 'az login' to setup account.
Я не понимаю, почему это работает в Azure CLI, но не в AzurePowerShell. Возможно, нам не хватает параметра или настройки, которые могли бы это исправить?
Любая помощь принимается с благодарностью.
Спасибо,
Стив.
Обратите внимание, что задача AzurePowerShell@5
запускает команду Connect-AzAccount
для аутентификации доступа субъекта-службы к Azure НЕ az login
, как это делает задача AzureCLI@2
.
Azure CLI и Azure PowerShell — это два разных набора командных инструментов. В Azure PowerShell вместо этого вы можете попробовать использовать команду Get-AzADApplication для вывода списка приложений AAD.
pool:
vmImage: ubuntu-latest
steps:
- task: AzureCLI@2
displayName: Azure CLI - Deploy bicep files
inputs:
azureSubscription: $(serviceConnectionName)
scriptType: bash
scriptLocation: inlineScript
useGlobalConfig: false
inlineScript: |
az ad app list --all
- task: AzurePowerShell@5
displayName: Azure PowerShell - Deploy bicep files
inputs:
azureSubscription: $(serviceConnectionName)
azurePowerShellVersion: LatestVersion
ScriptType: 'InlineScript'
Inline: |
Get-AzADApplication
Также рекомендуется использовать разные команды Azure CLI и Azure PowerShell для развертывания шаблона бицепса.
Развертывание ресурсов с помощью Azure CLI и файлов Bicep — Azure Resource Manager | Microsoft Learn
Развертывание ресурсов с помощью PowerShell и Bicep — Azure Resource Manager | Microsoft Learn
Спасибо большое за это Элвину - ты попал в проблему точно в голову. Теперь, когда это работает в файле YAML, я бы предпочел переместить его в модуль бицепса, а не в файл YAML. Сейчас мы сталкиваемся с новыми проблемами.
У нас есть это в файле бицепса:
ресурсов DeploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
name: 'TestPS'
location: locationName
kind: 'AzurePowerShell'
properties: {
azPowerShellVersion: '10.0'
timeout: 'PT10M'
retentionInterval: 'P1D'
cleanupPreference: 'OnExpiration'
arguments: '-Name \\"${name}\\"'
scriptContent: '''
param([string] $Name)
$output = (Get-AzADApplication -DisplayName 'Test_Sample1 (Microsoft Copilot Studio)' -Select appId).appId
$DeploymentScriptOutputs = @{}
$DeploymentScriptOutputs['text'] = $output
'''
}
}
output text string = deploymentScript.properties.outputs.text
... но когда мы его запустим, мы получим следующее:
The template output 'text' is not valid: The provided value for the template output 'text' is not valid. Expected a value of type 'String, Uri', but received a value of type 'Null'.
Мы не можем понять, почему это так.
[Извиняюсь за странное форматирование — ему не нравятся разделители в коде]
Я могу отправить вам файл отдельно, если это поможет? У меня возникли проблемы с его рендерингом здесь.
Привет @Steve, добро пожаловать в SO. Я поделился еще несколькими документами, чтобы помочь понять различия между двумя наборами командных инструментов. Надеюсь, это поможет решить ваш вопрос в этом посте и поможет вам в дальнейшей работе. Удачи и хорошего настроения!