Вопрос или проблема
Как открыть экран входа в Azure DevOps из PowerShell?
Я пишу скрипт PowerShell для ротации моего PAT на моем devbox. Вот что я сделал:
PS> .\Rotate-Pat.ps1
Вот код в Check-PatValidity.ps1:
$env:PAT | az devops login --organization "https://dev.azure.com/$organization"
$body = @{
displayName = $organization
scope = "vso.build vso.code_full vso.tokens vso.profile"
validTo = (Get-Date).AddDays(7).ToString("yyyy-MM-ddTHH:mm:ssZ")
allOrgs = $false
} | ConvertTo-Json
$response = Invoke-RestMethod -Uri "https://vssps.dev.azure.com/$organization/_apis/tokens/pats?api-version=7.1-preview.1" -Headers $headers -Method Post -Body $body -ContentType "application/json"
$prettyJson = $response | ConvertTo-Json -Depth 2
$prettyJson | Out-file $env:USERPROFILE\Downloads\patgenoutput.json -Encoding UTF8
if ($response) {
$newPat = $response.patToken.token
Write-Output "Новый PAT: $newPat"
}
Вот что я вижу в выводе (что абсолютно то же самое, что и в patgenoutput.json):
Похоже, это HTML-страница экрана входа Azure DevOps.
Вопросы:
- Я на правильном пути? Если нет, пожалуйста, укажите мне правильное направление.
- Как сделать вход в Azure DevOps интерактивным сеансом и получить токен доступа для генерации PAT?
Ответ или решение
Конечно! Давайте разберем вашу задачу и ответим на все ваши вопросы по порядку.
1. Правильный ли вы на пути?
Вы на правильном пути, но есть некоторые моменты, которые требуют доработки. Проблема, с которой вы столкнулись, связана с тем, что выводится HTML-страница логина Azure DevOps, что указывает на то, что CLI (интерфейс командной строки) не может аутентифицироваться с использованием вашего PAT (Персонального Токена Аутентификации). Вам необходимо сначала произвести интерактивную аутентификацию.
2. Как сделать интерактивный вход в Azure DevOps и получить токен доступа для генерации PAT?
Чтобы открыть экран входа Azure DevOps из PowerShell и произвести интерактивный вход, вам понадобится выполнить следующие шаги:
Шаги для интерактивного входа:
-
Убедитесь, что у вас установлен Azure CLI. Если он не установлен, вы можете скачать и установить его с официального сайта.
-
Вам необходимо выполнить команду для входа в Azure DevOps с использованием интерактивного метода:
az login
Эта команда откроет браузер с экраном входа Azure. После успешной аутентификации вы получите доступ к вашему аккаунту Azure и сможете управлять ресурсами через PowerShell.
-
После успешного входа, вы можете использовать следующую команду, чтобы связать вашу командную строку с определённой организацией DevOps:
az devops configure --defaults organization=https://dev.azure.com/ваша_организация
Генерация PAT:
Чтобы сгенерировать PAT, вы можете воспользоваться следующим примером кода:
$loadedPat = Get-Content -Path $env:USERPROFILE\Downloads\patgenoutput.json | ConvertFrom-Json
$organization = "ваша_организация"
$headers = @{
Authorization = "Bearer $($loadedPat.patToken.token)"
}
$body = @{
displayName = "New PAT"
scope = "vso.build vso.code_full vso.tokens vso.profile"
validTo = (Get-Date).AddDays(7).ToString("yyyy-MM-ddTHH:mm:ssZ")
allOrgs = $false
} | ConvertTo-Json
$response = Invoke-RestMethod -Uri "https://vssps.dev.azure.com/$organization/_apis/tokens/pats?api-version=7.1-preview.1" -Headers $headers -Method Post -Body $body -ContentType "application/json"
if ($response) {
$newPat = $response.patToken.token
Write-Output "New PAT: $newPat"
}
Заключение
Сначала выполните интерактивный вход с помощью az login
, а затем используйте полученный токен для создания нового PAT через REST API. Не забудьте, что для работы с API вам нужны правильные разрешения в Azure DevOps.
Если у вас возникнут дополнительные вопросы или недочёты, не стесняйтесь задавать!