如何使用PowerShell获取网站链接的完整URL?——解决GIMP最新版本下载链接获取问题
如何在PowerShell中获取GIMP最新版本的完整下载URL?
我尝试从GIMP官网获取最新版本的下载URL,编写了如下PowerShell脚本,但仅返回链接名称,不知如何获取完整的URL值。脚本内容如下:
$web = Invoke-WebRequest -Uri "https://download.gimp.org/pub/gimp/v2.10/windows/" $web.Links | Where-Object href -like '*exe' | select -Last 1 | select -expand href上述代码返回的是链接名称(
gimp-2.10.32-setup.exe),但我需要的是完整的URL值(https://download.gimp.org/pub/gimp/v2.10/windows/gimp-2.10.32-setup.exe),请指导我该如何操作。
解决方案
问题出在你提取的href属性是相对路径,而非完整的绝对URL。好在PowerShell的Invoke-WebRequest返回的链接对象自带了AbsoluteUri属性,它会自动帮你把相对路径和网页的基础URL拼接成完整地址。
修改后的脚本如下:
$web = Invoke-WebRequest -Uri "https://download.gimp.org/pub/gimp/v2.10/windows/" $web.Links | Where-Object href -like '*exe' | Select-Object -Last 1 -ExpandProperty AbsoluteUri
额外说明
如果你想手动拼接(比如需要自定义处理路径的场景),也可以这样操作,但要注意确保基础URL末尾带有斜杠,避免出现路径拼接错误:
$baseUrl = "https://download.gimp.org/pub/gimp/v2.10/windows/" $web = Invoke-WebRequest -Uri $baseUrl # 获取相对路径 $relativeLink = $web.Links | Where-Object href -like '*exe' | Select-Object -Last 1 -ExpandProperty href # 拼接成完整URL $fullDownloadUrl = $baseUrl + $relativeLink # 输出结果 Write-Output $fullDownloadUrl
不过更推荐使用AbsoluteUri,它能自动处理各种复杂的相对路径情况(比如以../开头的上级目录链接),比手动拼接更可靠。
内容的提问来源于stack exchange,提问作者atefeh kasiri




