Передача учетных данных в Invoke-RestMethod для API AzureDevOps для получения пользователей - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь создать сценарий powershell, который будет извлекать количество пользователей из организации AzureDevOps с помощью REST API.Я зашифровал свой пароль и поместил его в учетные данные, однако я получаю сообщение об ошибке:

Invoke-RestMethod : Cannot process argument transformation on parameter 
'Credential'. 
 userName
At D:\Others\Retrieve Users.ps1:11 char:80
+ ... stakeholderUrl -Method Get -Credential $webclient.Credentials).identi 
...
+                                            ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidData: (:) [Invoke-RestMethod], 
    ParameterBindingArgumentTransformationException
+ FullyQualifiedErrorId : 
ParameterArgumentTransformationError,Microsoft.PowerShell.
Commands.InvokeRestMethodCommand

Вот мой код сценария Powershell:

$stakeholderUrl = 
"https://vsaex.dev.azure.com/[organizationName]/_apis/userentitlements?api- 
version=5.0-preview.2"

$password = Get-Content D:\GetUsers\password.txt | ConvertTo-SecureString - 
Key (Get-Content D:\GetUsers\aes.key)
$credential = New-Object 
System.Net.NetworkCredential("sample@abc.com",$password)


$stakeholder = (Invoke-RestMethod -Uri $stakeholderUrl -Method Get - 
Credential $credential).identities

$StakeholderUsers = @()

foreach($user in $stakeholder){

$customObject = new-object PSObject -property @{
      "Display Name" = $user.displayName
      "Email" = $user.mailAddress
      "License" = $user.licenseDisplayName
    } 

$StakeholderUsers += $customObject      
}

$StakeholderUsers | Select `
            displayName,
            mailAddress, 
            licenseDisplayName

Буду признателен, если выможет помочь мне в этом.

Спасибо!

1 Ответ

0 голосов
/ 10 октября 2018

Сохраните учетные данные следующим образом:

domain\username:password

$Credentials= Get-Content D:\GetUsers\Credentials.txt

Создайте базовый заголовок авторизации в кодировке Base64:

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}" -f $Credentials)))

Вызовите остальное:

$result = Invoke-RestMethod -Uri $uri -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
...