Lors de l'appel d'un Invoke-RestMethod
en utilisant Powershell comme:
$headers = @{ Authorization="Secret $username $password" Content='application/json' }
et $ headers
étant
Invoke-RestMethod -Method Get -Uri "https://google.com/api/GetData" -Headers $headers
Quel est le format attendu pour les paramètres $ username
et $password
?
3 Réponses :
Pour autant que je sache, vous devez envoyer un jeton OAuth2 dans les en-têtes de la requête.
$headers = @{ Authorization="Bearer $token" }
Peut-être que le billet de blog suivant vous donne une idée de la façon de procéder. https://lazyadmin.nl/it/connect-to-google -api-avec-powershell /
La solution fournie par Rufer7 est correcte. Je veux juste ajouter une chose que vous pouvez également passer le paramètre de contenu dans la méthode Invoke-WebRequest en gardant l'en-tête plus simple comme celui-ci et en obtenant la sortie au format Json. Donc, mon script raffiné ressemblera à ceci.
Script PowerShell:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $headers = @{ Authorization="Bearer $token" } $responseData = (Invoke-WebRequest -Uri $Url -Method Get -Headers $headers -UseBasicParsing -ContentType "application/json").Content | ConvertFrom-Json | ConvertTo-Json
La première ligne est facultative uniquement si vous observez cette erreur Sinon, vous pouvez l'ignorer.
"Invoke-WebRequest: La requête a été abandonnée: impossible de créer un canal sécurisé SSL / TLS."
Dans mon scénario, j'ai utilisé username
et password
dans le corps de l'appel d'API REST.
Mon corps est:
Invoke-RestMethod -Method Get -Uri "https://google.com/api/GetData" -ContentType application/json -Body $body
Dans la fonction, j'utilise la classe PSCredential:
[System.Management.Automation.PSCredential] [System.Management.Automation.Credential()] $Credential = [System.Management.Automation.PSCredential]::Empty,
Finalement, je l'appelle ainsi:
$body = [PSCustomObject] @{ username=$Credential.UserName; password=$Credential.GetNetworkCredential().Password; } | ConvertTo-Json
Le ContentType
est défini, car j'attends JSON en réponse.