답변:
다음은 간단한 PS 3.0 이상이 작동하고 많은 PS barf를 포함하지 않는 하나의 라이너입니다.
wget http://blog.stackexchange.com/ -OutFile out.html
참고 :
wget
에 대한 별칭입니다 Invoke-WebRequest
Windows Server Core 설치에서는 다음과 같이 작성해야합니다.
wget http://blog.stackexchange.com/ -UseBasicParsing -OutFile out.html
2014 년 9 월 20 일 이전에 제안했습니다.
(wget http://blog.stackexchange.com/).Content >out.html
답으로. 그러나 >
연산자 (가명 Out-File
)는 입력을 유니 코드로 변환하기 때문에 모든 경우에 작동하지는 않습니다 .
Windows 7을 사용하는 경우 버전 4 이상의 Windows Management Framework를 설치해야합니다.
$ProgressPreference = "silentlyContinue"
이전 작업을 수행하면 Invoke-WebRequest
큰 파일의 다운로드 속도가 크게 향상 될 수 있습니다. 이 변수는 진행률 UI 렌더링 여부를 제어합니다.
파일 만 검색 하면 WebClient 객체 의 DownloadFile 메서드를 사용할 수 있습니다 .
$client = New-Object System.Net.WebClient
$client.DownloadFile($url, $path)
어디 $url
파일의 URL을 나타내는 문자열이며, $path
파일에 저장됩니다 로컬 경로를 대표한다.
그 참고 $path
파일 이름을 포함해야합니다; 단지 디렉토리가 될 수 없습니다.
(new-object System.Net.WebClient).DownloadFile( '$url, $path)
최고의 통신이므로 한 줄 형식으로 다시 작성할 수있는 것으로 보입니다 wget
. 감사!
$client.DownloadFile( "http://blog.stackexchange.com/", "c:/temp2/_Download.html")
(new-object System.Net.WebClient).DownloadData($url) | Out-Null
이 Invoke-WebRequest
다가오는 PowerShell을 버전 3 :
Invoke-WebRequest http://www.google.com/ -OutFile c:\google.html
dd
...
-Outfile
사용할 수있을 때 매개 변수가 불필요한 것처럼 보입니다 . >
>>
wget
:)
wget
그리고 curl
에 aliasted 있습니다 Invoke-WebRequest
( iwr
기본적으로) : D
약간 지저분하지만 파일 다운로드 지침을 제공하는 이 블로그 게시물 이 있습니다.
또는 BITS를 사용할 수 있습니다 (권장하는 것이 좋습니다).
Import-Module BitsTransfer
Start-BitsTransfer -source "http://urlToDownload"
진행률이 표시되고 파일을 현재 디렉토리로 다운로드합니다.
Start-BitsTransfer : Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
입니다. 나는 의아해한다 : |
PowerShell V4 원 라이너 :
(iwr http://blog.stackexchange.com/).Content >index.html`
또는
(iwr http://demo.mediacore.tv/files/31266.mp4).Content >video.mp4
이것은 기본적으로 Warren의 (굉장한) V3 one-liner입니다 (감사합니다!) -V4 PowerShell에서 작동하도록 약간 변경했습니다.
단순히 사용 wget
하기보다는 단순히 사용하는 Warren의 단일 라이너iwr
는 여전히 V3에서 작동해야합니다 (적어도, 테스트하지는 않았습니다). 어쨌든. 그러나 V4 PowerShell 에서 실행하려고하면 (실제로 시도한 것처럼) PowerShell wget
이 유효한 cmdlet / 프로그램으로 확인되지 않습니다.
내가 고른부터로 - 관심있는 경우, 즉 밥의 코멘트 에 대한 응답으로 허용 대답 (고마워!) - 때문에 PowerShell을 V4의 같은 wget
과 curl
에 별명되는 Invoke-WebRequest
설정, iwr
기본적으로 . 따라서 wget
해결할 수 없으며 여기 에서도 curl
작동하지 않습니다 .
파일을 다운로드하기 전에 짧은 URL을 확인하는 PowerShell 기능은 다음과 같습니다.
function Get-FileFromUri {
param(
[parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
[string]
[Alias('Uri')]
$Url,
[parameter(Mandatory=$false, Position=1)]
[string]
[Alias('Folder')]
$FolderPath
)
process {
try {
# resolve short URLs
$req = [System.Net.HttpWebRequest]::Create($Url)
$req.Method = "HEAD"
$response = $req.GetResponse()
$fUri = $response.ResponseUri
$filename = [System.IO.Path]::GetFileName($fUri.LocalPath);
$response.Close()
# download file
$destination = (Get-Item -Path ".\" -Verbose).FullName
if ($FolderPath) { $destination = $FolderPath }
if ($destination.EndsWith('\')) {
$destination += $filename
} else {
$destination += '\' + $filename
}
$webclient = New-Object System.Net.webclient
$webclient.downloadfile($fUri.AbsoluteUri, $destination)
write-host -ForegroundColor DarkGreen "downloaded '$($fUri.AbsoluteUri)' to '$($destination)'"
} catch {
write-host -ForegroundColor DarkRed $_.Exception.Message
}
}
}
다음과 같이 파일을 현재 폴더로 다운로드하십시오 :
Get-FileFromUri http://example.com/url/of/example/file
또는 지정된 폴더로 파일을 다운로드하려면
Get-FileFromUri http://example.com/url/of/example/file C:\example-folder
다음 함수는 URL을 얻습니다.
function Get-URLContent ($url, $path) {
if (!$path) {
$path = Join-Path $pwd.Path ([URI]$url).Segments[-1]
}
$wc = New-Object Net.WebClient
$wc.UseDefaultCredentials = $true
$wc.Proxy.Credentials = $wc.Credentials
$wc.DownloadFile($url, $path)
}
일부 의견 :
(New-Object Net.WebClient).DownloadFile($url, $path)
잘 작동합니다.if (!$path) {...}
섹션에서는 URL에 지정된 이름을 사용하여 파일을 현재 디렉토리로 다운로드하려는 간단한 경우를 처리합니다.Windows 기능이 설정되면 wget이 포함 된 Windows 10 bash 쉘을 사용하십시오.
Windows에 Ubuntu bash 쉘을 설치하는 방법 :
Windows가 충분히 새 버전 (예 : 버전 1809 이상) 인 경우 "실제"컬을 사용할 수 있습니다. curl에는 명령 줄 옵션 "-O"가 있습니다 (대문자 O; 소문자는 동일하지 않습니다!) "-remote-name"옵션은 "-remote-name"옵션으로 curl에게 저장된 파일을 가져옵니다. URL의 파일 이름 부분과 동일한 이름입니다.
"Invoke-WebRequest"의 별명 "curl"과 구별하기 위해이를 "curl.exe"로 시작해야합니다. 우연히 그것은 변경없이 cmd.exe에서 작동합니다.
다른 답변과 동일한 예를 사용하십시오.
curl.exe -O http://demo.mediacore.tv/files/31266.mp4
(사이트는 이것을 위해 코멘트로 추가 할 수 없습니다. 분명히 그것에 대한 "평판"이 더 필요하기 때문에 새로운 답변을 얻습니다)
-outfile 매개 변수가있는 Invoke-WebRequest는 문자열을 예상하므로 파일 이름이 따옴표로 묶지 않고 숫자로 시작하면 출력 파일이 작성되지 않습니다.
예. Invoke-WebRequest -Uri "http://www.google.com/" -outfile "2.pdf"
문자로 시작하는 파일 이름에는 영향을 미치지 않습니다.
wget
의 별칭이며 Invoke-WebRequest
위와 유사 함)