Um den Download einer Datei von einer bestimmten Site zu automatisieren, muss ich auf der Site dem REST-Webdienst einige Informationen übergeben, die in einem JSON-Objekt enthalten sind. Um dies zu tun, baue ich eine Hash-Tabelle, konvertiere sie in JSON und füge sie dann dem Hauptteil von Invoke-WebRequest hinzu.Herunterladen einer großen Datei mit Powershell Invoke-RestMethod?
$hash = @{ logonkey = "$logonkey";
tokenkey = "$tokenkey"
fileid = "$fileID"
}
$obj = $hash | convertto-json
$obj = 'obj=' + $obj
Invoke-WebRequest '$url' -Method POST -Body $obj -Outfile $localpath
Allerdings, mit dieser Methode, die ziemlich große Datei verwaltet nie vollständig herunterladen. Nur etwa die Hälfte davon wird heruntergeladen. Soweit ich das beurteilen kann, lädt Powershell das Response-Objekt vollständig in den Speicher, bevor es schließlich an den angegebenen lokalen Ausgabepfad übergeben wird. Das hat mich dazu gebracht, nach einer besseren Methode zu suchen, aber ich habe es sehr schwer.
Nach ein wenig Nachforschungen scheint es, dass die Verwendung von System.Net.WebClient am besten dafür ist, da es die Antwort auf die Festplatte während des Downloads puffert. Jedoch bin ich verloren, genau wie ein JSON-Objekt mit dieser Methode übergeben wird. Ist das möglich? Gehe ich einen völlig falschen Weg?