API-интерфейс Azure DevOps Rest в Powershell, в котором отсутствуют параметры - PullRequest
1 голос
/ 24 октября 2019

Я начинаю использовать PowerShell для вызова REST API Azure DevOps. Но похоже, что когда я пытаюсь добавить параметры, он говорит мне:

Не удается найти параметр, который соответствует имени параметра 'repositoryId'

Вот как выглядит мой вызовкак в PowerShell. Если я достану параметр, он работает. Что я делаю не так?

Invoke-RestMethod -Uri 'https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=5.1' -repositoryId $repoId -Headers (my authentication) -Method Get

Согласно документации Microsoft, это должно работать. https://docs.microsoft.com/en-us/rest/api/azure/devops/build/builds/list?view=azure-devops-rest-5.1

Ответы [ 2 ]

1 голос
/ 25 октября 2019

repositoryId должен быть параметром url, как упомянул Booga Roo. Ошибка указала, что Тип репозитория отсутствует.

Вы должны добавить еще один параметр в свой URI repositoryType={repositoryType}. Так что URI должен быть таким, как показано ниже.

Пожалуйста, отметьте здесь для всех типов хранилища

https://dev.azure.com/{Organization}/{Project}/_apis/build/builds?repositoryId={id}&repositoryType=TfsGit&api-version=5.1

Дополнение:

Вы можете получитьваш repositoryId с URL-адреса Репозитории страницы в Репо в Настройки проекта . Проверьте скриншот ниже.

enter image description here

1 голос
/ 24 октября 2019

Командлет Invoke-RestMethod не имеет параметра -repositoryId. Фразы и примеры на странице справки предназначены для «параметров URI» вместо параметров PowerShell. Это означает, что вам нужно встроить его в значение -Uri вместо того, чтобы пытаться использовать его напрямую.

Я предлагаю использовать это:

Invoke-RestMethod -Uri "https://dev.azure.com/{organization}/{project}/_apis/build/builds?repositoryId={$repoId}&api-version=5.1" -Headers (my authentication) -Method Get

Примечание: в этом примере есть двойные кавычкиURI. Это происходит так, что расширение переменной для $ repoId будет происходить и будет правильно интерпретироваться как часть URI. Использование одинарных кавычек, как в исходном примере, предотвратит это и будет воспринимать его как буквальное строковое значение и не будет выполнять никаких подстановок.

...