파일 다운로드를위한 PowerShell 모듈.
invoke-webrequest를 사용하려면 사전에 알지 못하는 출력 파일 이름을 공급해야하며 URL에서 항상 추출 할 수있는 것은 아닙니다.
또한 다운로드하는 동안 전체 파일을 메모리에 보유하고 있으며 큰 파일을 다운로드하는 경우 나쁜 소식입니다.
많은 브라우저처럼 원래 소스 파일의 수정 날짜를 유지하지 않습니다.
또한 (기본적으로 $ progressedpreference가 설정된 Windows PowerShell에서) 진행 막대가 자주 업데이트되어 다운로드가 크게 느려집니다.
START-BITSTRANSFER는 파일 이름을 자동으로 결정할 수 있지만 모든 URL에 대해 작동하지 않으며 Windows에서만 지원됩니다.
일부 URL에는 다른 사용자 에이전트가 성공적으로 연결해야합니다.
이 모듈은 이러한 문제를 해결합니다.
.NET httpclient 클래스를 사용합니다 (현재는 Microsoft에서 현재 더 이상 사용되지 않은 WebClient 클래스를 사용하여 사용하는 것이 좋습니다).
먼저 Content-Disposition 헤더에서 파일 이름을 가져 오려고합니다. 헤더는 정기적 인 GET 요청에 의해 얻어집니다 (일부 웹 서버는 헤드 요청을 거부하는 것으로 나타났습니다). 이 헤더가 존재하지 않으면 절대 URL에서 파일 이름을 추출합니다 (제공된 URL이 다른 곳에서 리디렉션 될 수 있기 때문에).
파일은 메모리를 완전히 유지하지 않고 디스크로 직접 스트리밍됩니다.
다운로드가 완료되면 수정 된 날짜가 최종 수정 된 헤더와 일치하도록 완료되면 업데이트됩니다.
진행률 표시 줄은 시스템 리소스의 과도한 사용을 방지하기 위해 250ms마다 업데이트하는 것으로 제한됩니다.
Chrome의 사용자 에이전트 문자열 및 GoogleBot 웹 크롤러는 기본적으로 시도됩니다.
다음 명령을 실행하여 PowerShell Gallery에서 설치하십시오.
설치 -모듈 -이름 psdownload
Resolve-uri "https://aka.ms/vs/17/release/vc_redist.x64.exe"
이렇게하면 응답 헤더에서 사용 가능한 경우 파일 이름, 파일 크기 및 마지막 수정 날짜뿐만 아니라 절대 URI (리디렉션 된 URI)를 반환합니다.
Invoke -download -uri "https://aka.ms/vs/17/release/vc_redist.x64.exe"-destination "$ env : userprofiledownloads"
파일을 다운로드 폴더로 다운로드합니다.
파이프 라인 입력도 지원됩니다.
"https://aka.ms/vs/17/release/vc_redist.x64.exe","https://aka.ms/vs/17/release/vc_redist.x86.exe"| Invoke -Download -destination "$ env : userprofiledownloads"
URL은 URI 의 별칭으로 허용됩니다.
선택적 매개 변수 :
파일 이름
이것을 사용하여 자동 감지를 시도하지 않고 파일 이름을 무시하십시오.
userAgent
Mozilla/5.0 (Windows NT 10.0; Win64; x64) Applewebkit/537.36 (Gecko Like Gecko) Chrome/116.0.0.0 사파리/537.36
Googlebot/2.1 (+http : //www.google.com/bot.html)
기본 사용자 에이전트를 무시하십시오. 기본적으로 다음을 사용하여 순환합니다.
헤더
기본값은 @{ 'accept'= ' / '}이며 일부 서버에서 FileZilla와 같은 다운로드를 제공하도록 제작해야합니다.
온도
기본적으로 진행중인 다운로드는 % temp % / $ env : temp로 저장됩니다.
무시합니다
날짜 수정 헤더를 무시하고, 수정 된 것은 파일이 대신 다운로드 된 날짜가됩니다.
블록 파일
인터넷에서 다운로드 한대로 파일을 표시합니다 (기본적으로는이 작업을 수행하지 않습니다).
Noclobber
기존 파일을 덮어 쓰는 것을 방지하려면 이것을 사용하십시오.
노보 로크
진행률 표시 줄을 억제하십시오.
패스 스루
다운로드 된 파일의 파이프 라인에 FileInfo 객체를 반환합니다.
이것은 많은 수의 URL에 대해 테스트되었습니다. 특정 파일을 다운로드 할 수없는 경우 문제를 제출하십시오. 일부 웹 페이지는 실제 다운로드를 트리거하기 위해 일부 JavaScript를 실행할 수 있습니다. 이 유형의 URL은 지원되지 않으므로 클라이언트 측 스크립트를 실행할 필요없이 리소스를 직접 지적해야합니다.