Использование командлета Powershell в Azure DevOps

avatar
Lars Christian Jensen
9 августа 2021 в 05:44
279
1
0

Я пытался использовать командлеты PowerShell PowerApps (https://powerapps.microsoft.com/en-us/blog/gdpr-admin-powershell-cmdlets/) в DevOps и потерпел неудачу. Они очень хорошо работают на рабочем столе, но когда я запускаю их в задаче PowerShell в DevOps, они всегда останавливаются, без ошибок. Он просто запускается, но никогда не завершается или сообщает об ошибке. Я уверен, что есть какая-то деталь, которую мне не хватает, я просто не знаю, что. Может ли кто-нибудь помочь мне встать на правильный путь?

Источник
Nick.McDermaid
9 августа 2021 в 05:57
0

Так, например, если вы запустите этот powershell, что вы увидите в журналах: Write-Host "##vso[task.logissue type=command]Testing powershell"

koushik
9 августа 2021 в 06:14
0

Я бы посоветовал следовать этому docs.microsoft.com/en-us/power-platform/alm/devops-build-tools . После создания субъекта-службы вы можете создать ServiceConnection в AzureDevops и зависеть от задачи AzurePowershell. В противном случае создайте секретную переменную и используйте ее с задачей PowerShell.

Lars Christian Jensen
9 августа 2021 в 06:37
0

@Nick.McDermaid Я получаю ответ: 2021-08-09T06:31:24.2836583Z ##[error]Невозможно обработать команду '##vso[task.logissue type=command]Успешное тестирование powershell. См. документацию (go.microsoft.com/fwlink/?LinkId=817296) 2021-08-09T06:31:24.2846958Z ##[error]issue type не является ожидаемым типом задачи. Я пропустил зависимость здесь?

Lars Christian Jensen
9 августа 2021 в 06:37
0

@koushik yes Я использую субъект-службу и инструменты сборки MS для большинства задач, но не пробовал задачу Azure PowerShell.

koushik
9 августа 2021 в 08:28
1

@LarsChristianJensen для регистрации проблем из Powershell, Write-Host "##vso[task.logissue type=error]Произошла ошибка"

Ответы (1)

avatar
Joy Wang
13 августа 2021 в 13:47
1

Полагаю, вы использовали интерактивный способ входа в систему с помощью Add-PowerAppsAccount. В конвейере Azure DevOps интерактивный способ не поддерживается.

В этом случае вы можете установить модули с -Force и использовать неинтерактивный способ входа в систему, например. как указано в блоге.

Install-Module -Name Microsoft.PowerApps.Administration.PowerShell -Force
Install-Module -Name Microsoft.PowerApps.PowerShell -AllowClobber -Force

$pass = ConvertTo-SecureString "password" -AsPlainText -Force
Add-PowerAppsAccount -Username foo@bar.com -Password $pass

Примечание. Убедитесь, что для учетной записи пользователя не включена многофакторная аутентификация, иначе вы не сможете использовать ее в конвейере.

Bender the Greatest
18 августа 2021 в 21:32
0

Стоит упомянуть, что это хороший подход при работе с общедоступным PowerShell Gallery, но при использовании внутреннего канала галереи я бы рекомендовал пометить репозиторий как доверенный, при условии, что общедоступные пакеты через него недоступны.