Start-BitsTransfer 重定向时忽略文件名

Start-BitsTransfer is ignoring filename when redirecting

我正在使用 Start-BitsTransfer 命令在 powershell 脚本中下载远程资源。

但是,当 url 是短 url 时,命令似乎没有使用正确的文件名。

例如,这些 url: http://ligman.me/1IW1oab 实际上重定向到 http://download.microsoft.com/DOWNLOAD/D/6/7/D670D322-5771-409E-BF34-5B98496DEB0A/MICROSOFT_PRESS_EBOOK_INTRODUCING_AZURE_PDF.PDF(HTTP 301 响应)。

但是当我执行

Start-BitsTransfer http://ligman.me/1IW1oab

结果文件名为1IW1oab

有没有办法使用这个命令并获得正确的文件名?

简单地使用命令 no 但你可以在拍摄前解决 url 以这种方式:

$url = 'http://ligman.me/1IW1oab'    
$WebClientObject = New-Object System.Net.WebClient
$WebRequest = [System.Net.WebRequest]::create($URL)
$WebResponse = $WebRequest.GetResponse()
$ActualDownloadURL = $WebResponse.ResponseUri.AbsoluteUri
$ObjectProperties = @{ 'Shortened URL' = $URL;
                       'Actual URL' = $ActualDownloadURL}
$ResultsObject = New-Object -TypeName PSObject -Property $ObjectProperties
$WebResponse.Close()
$ResultsObject.'Actual URL'

Start-BitsTransfer 命令包含一个 -destination 开关

Start-BitsTransfer http://ligman.me/1IW1oab -destination AZURE.PDF

一般来说,对于使用最终 URL 是正确选择的每个 "url shortening" 场景,都有一个 "redirect for security" 场景可以将完美的 URL 转换为GUID。