PowerShell http post Базовая аутентификация REST API

У меня есть базовая аутентификация, работающая с REST API с использованием curl:

curl -X POST  -H 'Accept: application/json' -u user:password http://localhost/test/

Но когда я пытаюсь сделать то же самое с помощью powershell webRequest я получаю 403 (отказано в разрешении). Этот сценарий отлично работает, когда я отключаю проверку подлинности в коде REST.

Как лучше всего в PowerShell передавать учетные данные в запросе POST, аналогичном curl, или что я могу сделать, чтобы исправить следующий скрипт.

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

Вот мой сценарий PowerShell:

function Execute-HTTPPostCommand() {
    param(
        [string] $target = $null
    )

    $username = "user"
    $password = "pass"

    $webRequest = [System.Net.WebRequest]::Create($target)
    $webRequest.ContentType = "text/html"
    $PostStr = [System.Text.Encoding]::UTF8.GetBytes($Post)
    $webrequest.ContentLength = $PostStr.Length
    $webRequest.ServicePoint.Expect100Continue = $false
    $webRequest.Credentials = New-Object System.Net.NetworkCredential -ArgumentList $username, $password 

    $webRequest.PreAuthenticate = $true
    $webRequest.Method = "POST"

    $requestStream = $webRequest.GetRequestStream()
    $requestStream.Write($PostStr, 0,$PostStr.length)
    v$requestStream.Close()

    [System.Net.WebResponse] $resp = $webRequest.GetResponse();
    $rs = $resp.GetResponseStream();
    [System.IO.StreamReader] $sr = New-Object System.IO.StreamReader -argumentList $rs;
    [string] $results = $sr.ReadToEnd();

    return $results;

}


$post = "volume=6001F930010310000195000200000000&arrayendpoint=2000001F930010A4&hostendpoint=100000051ED4469C&lun=2"

$URL = "http://example.com/test/"

Execute-HTTPPostCommand $URL
20
задан Andy Arismendi 19 January 2012 в 04:25
поделиться