นี่คือฟังก์ชั่น PowerShell ที่แก้ไข URL แบบสั้นก่อนที่จะดาวน์โหลดไฟล์
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