PowerShell 從網址下載檔案的所有方法
驗證網址是否有效
在下載前要先確認網址是否有效,比較簡易有效率的方法試直接驗Head就行,邏輯簡單但可能會有不適用情況,再自行調整。
# 檢查鏈接是否有效
function Test-URI {
param (
[Parameter(Mandatory)]
[string] $Uri
)
try {
# 嘗試發送 HEAD 請求
$response = Invoke-WebRequest -Uri $Uri -Method Head -TimeoutSec 10
# 檢查 HTTP 狀態碼是否為 200
if ($response -and $response.StatusCode -eq 200) {
return $true
} else {
# Write-Warning "Received HTTP status code $($response.StatusCode). The link might not be valid."
return $false
}
} catch {
# Write-Warning "Error checking the link: $_"
return $null
}
}
用例
$link = 'https://www.google.com/'
if (!(Test-URI $link)) {
Write-Error "The link might not be valid" -ErrorAction Stop
} else { Write-Host $link -ForegroundColor DarkGray }
下載指令
這裡有好幾個指令大概簡單介紹一下,自己挑一個合適的用
方法1 .Net 方法
最建議使用的方法
事實上有許多大型專案的教學安裝時用指令就是這個
(New-Object Net.WebClient).DownloadFile($Url, $DLPath)
方法2 Start-BitsTransfer 方法
這個載起來也比 Invoke-WebRequest 好上一些,有個優點是可以續傳
不過只能在 Windwos 下使用並且如果系統本身沒啟用該服務也會無法使用
Start-BitsTransfer -Source $Url -Destination $DLPath
方法3 Invoke-WebRequest 方法
這個其實更適合用來載純文字的網址,主要是用來查網頁Headder之類的
其他還有好幾個別名可以用
- curl -> Invoke-WebRequest
- iwr -> Invoke-WebRequest
- wget -> Invoke-WebRequest
Invoke-WebRequest -Uri $Url -OutFile $DLPath
沒有留言:
張貼留言