Verwenden von PowerShell Invoke-RestMethod zum POST großer binärer Multipart- / Formulardaten

Ich versuche das zu benutzenInvoke-RestMethod Cmdlet in PowerShell 3 und 4 zum Hochladen einer großen Binärdatei mithilfe des Uploads mehrerer Teile / Formulardaten einer REST-API. Hier ist ein funktionierendes cURL-Beispiel, wie ich das, was ich in PowerShell tun möchte, ausführen kann:

curl -i -k -H "accept: application/json" -H "content-type: multipart/form-data" -H "accept-language: en-us" -H "auth: tokenid" -F file="@Z:\large_binary_file.bin" -X POST "https://server/rest/uri2"

Ich würde gerne ein funktionierendes Beispiel sehen, wie Invoke-RestMethod zum POSTen von Multipart- / Formulardaten verwendet wird. Ich habe einen ... gefundenBlogbeitrag des PowerShell-Teams zur Verwendung von Invoke-RestMethod auf OneDrive (auch bekannt als SkyDrive) hochladen, funktioniert aber nicht gut. Ich möchte auch vermeiden, System.Net.WebClient zu verwenden, wenn überhaupt möglich. Habe ich auch gefundenein weiterer Thread hier auf Stackoverflow, aber es hat nicht viel geholfen.

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }

$server = "https://server"
uri = "/rest/uri1"
$headers = @{"accept" = "application/json"; "content-type" = "application/json";"accept-language" = "en-us"}
$body = @{"userName" = "administrator"; "password" = "password"}
$method = "POST"

#Get Session ID
$resp = Invoke-RestMethod -Method $method -Headers $headers -Uri ($server+$uri) -body (convertto-json $Body -depth 99)

$sessionID = $resp.sessionID

#Upload file
$uri = "/rest/uri2"
$headers = @{"accept" = "application/json";"content-type" = "multipart/form-data"; "accept-        language" = "en-us"; "auth" = $sessionID}
$medthod = "POST"
$largeFile = "Z:\large_binary_file.bin"

Ich habe beide Möglichkeiten der Verwendung von Invoke-RestMethod ausprobiert:

Invoke-RestMethod -Method $method -Headers $headers -Uri ($server+$uri) -InFile $largeFile

oder

$body = "file=$(get-content $updateFile -Enc Byte -raw)"
Invoke-RestMethod -Method $method -Headers $headers -Uri ($server+$uri) -body $body

Antworten auf die Frage(1)

Ihre Antwort auf die Frage