Powershell эквивалент команды CURL - PullRequest
0 голосов
/ 04 июля 2018

Команда CURL приведена ниже.

curl -ik -X PUT -H "X-API-Version: 600" -H "Auth:$AUTH" -H "Content-Type: multipart/form-data" -F "filename=@./temp.crl;type=application/pkix-crl" https://$HOST_IP/rest/$ALIASNAME/crl

Я хотел получить эквивалент Powershell с помощью Invoke-RestMethod. Я попробовал следующий код.

$url='https://'+$hostname+'/rest/+$aliasname+'/crl'
$url
$hdrs=@{}
$hdrs.Add('X-API-Version', '600');
$hdrs.Add('Auth', $Auth);
$hdrs.Add('Content-Type', 'application/json');
$path=get-location
$FileContent = [IO.File]::ReadAllBytes(temp.crl)
$file=@{'filename'=$FileContent}
Invoke-RestMethod -Uri $url -ContentType 'mutlipart/form-data' -Method Put -Headers $hdrs -Body $file

Возвращает 400 (ошибка неверного запроса)

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Этот фрагмент кода должен решить вашу проблему. Ваш вопрос содержал несколько опечаток и противоречивую логику.

$restArgs = @{
    Uri         = "https://$hostname/rest/$aliasname/crl"
    Headers     = @{
        'X-API-Version' = 600
        Auth            = $Auth
    }
    Method      = 'Put'
    Body        = @{
        filename = [IO.File]::ReadAllBytes("$PSScriptRoot\temp.crl")
    }
    ContentType = 'multipart/form-data'
}
Invoke-RestMethod @restArgs
0 голосов
/ 04 июля 2018

Используйте параметр -InFile, попробуйте это:

$FilePath = '/temp.crl' # Make sure the path is correct #
$Headers = @{"X-API-Version" = 600;Auth = $AUTH}
Invoke-RestMethod -Uri "https://$HOST_IP/rest/$ALIASNAME/crl" `
-ContentType 'multipart/form-data' `
-Headers $Headers -Method Put -InFile $FilePath
...