Как открыть экран входа в Azure DevOps из PowerShell?

Вопрос или проблема

Как открыть экран входа в 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):
enter image description here

Похоже, это HTML-страница экрана входа Azure DevOps.

Вопросы:

  1. Я на правильном пути? Если нет, пожалуйста, укажите мне правильное направление.
  2. Как сделать вход в Azure DevOps интерактивным сеансом и получить токен доступа для генерации PAT?

Ответ или решение

Конечно! Давайте разберем вашу задачу и ответим на все ваши вопросы по порядку.

1. Правильный ли вы на пути?

Вы на правильном пути, но есть некоторые моменты, которые требуют доработки. Проблема, с которой вы столкнулись, связана с тем, что выводится HTML-страница логина Azure DevOps, что указывает на то, что CLI (интерфейс командной строки) не может аутентифицироваться с использованием вашего PAT (Персонального Токена Аутентификации). Вам необходимо сначала произвести интерактивную аутентификацию.

2. Как сделать интерактивный вход в Azure DevOps и получить токен доступа для генерации PAT?

Чтобы открыть экран входа Azure DevOps из PowerShell и произвести интерактивный вход, вам понадобится выполнить следующие шаги:

Шаги для интерактивного входа:

  1. Убедитесь, что у вас установлен Azure CLI. Если он не установлен, вы можете скачать и установить его с официального сайта.

  2. Вам необходимо выполнить команду для входа в Azure DevOps с использованием интерактивного метода:

    az login

    Эта команда откроет браузер с экраном входа Azure. После успешной аутентификации вы получите доступ к вашему аккаунту Azure и сможете управлять ресурсами через PowerShell.

  3. После успешного входа, вы можете использовать следующую команду, чтобы связать вашу командную строку с определённой организацией 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.

Если у вас возникнут дополнительные вопросы или недочёты, не стесняйтесь задавать!

Оцените материал
Добавить комментарий

Капча загружается...