특정 사이트의 파일 다운로드를 자동화하기 위해 사이트에서 JSON 객체에 포함 된 일부 정보를 REST 웹 서비스에 전달해야합니다. 이렇게하기 위해 해시 테이블을 만들어 JSON으로 변환 한 다음 Invoke-WebRequest 본문에 추가합니다.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
그러나이 방법을 사용하면 비교적 큰 파일은 완전히 다운로드 할 수 없게됩니다. 약 절반 만 다운로드됩니다. PowerShell은 마지막으로 지정된 로컬 출력 경로로 덤프하기 전에 Response Object를 메모리에 완전히로드합니다. 이로 인해 더 나은 방법을 모색하게되었지만 매우 어려움을 겪고 있습니다.
약간의 연구를 한 후에 다운로드를 통해 디스크에 대한 응답을 버퍼링하므로 System.Net.WebClient를 사용하는 것이 가장 좋습니다. 그러나이 메서드를 사용하여 JSON 객체를 전달하는 방법은 정확히 알 수 없습니다. 이것이 가능한가? 완전히 잘못된 길로 향하고 있습니까?