我想從它的站點獲取 GIMP 最新版本的下載 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),但我需要值(“https://download.gimp.org/pub/gimp/v2.10/windows/gimp-2.10.32- setup.exe") 有人能指導我怎么做嗎
uj5u.com熱心網友回復:
您知道顯示的 url 是相對的。只需自己附加 URL 的根部分。
$Uri = 'https://download.gimp.org/pub/gimp/v2.10/windows/'
$web = Invoke-WebRequest -Uri $uri
$ExeRelLink = $web.Links | Where-Object href -like '*exe' | select -Last 1 -expand href
# Here is your download link.
$DownloadLink = $Uri $ExeRelLink
附加說明
您可以將2 個 select 陳述句中的-Lastand合并為 1 個。-Expand
uj5u.com熱心網友回復:
有幾個下載站點的布局與此 GIMP 頁面完全相同或非常相似,包括許多 Apache 專案,如Tomcat和ActiveMQ。過去我撰寫了一個小函式來決議這些頁面和其他頁面,有趣的是它也適用于這個 GIMP 頁面。我認為這是值得分享的。
Function Extract-FilenameFromWebsite {
[cmdletbinding()]
Param(
[parameter(Position=0,ValueFromPipeline)]
$Url
)
begin{
$pattern = '<a href. ">(?<FileName>. ?\.. ?)</a>\s (?<Date>\d -. ?)\s{2,}(?<Size>\d \w)?'
}
process{
$website = Invoke-WebRequest $Url -UseBasicParsing
switch -Regex ($website.Content -split '\r?\n'){
$pattern {
[PSCustomObject]@{
FileName = $matches.FileName
URL = '{0}{1}' -f $Url,$matches.FileName
LastModified = [datetime]$matches.Date
Size = $matches.Size
}
}
}
}
}
假定傳入的站點有一個斜杠。如果您想考慮其中任何一個,您可以將這個簡單的行添加到流程塊中。
if($Url -notmatch '/$'){$Url = "$Url/"}
要獲取最新版本,請像這樣呼叫函式
$url = 'https://download.gimp.org/pub/gimp/v2.10/windows/'
$latest = Extract-FilenameFromWebsite -Url $Url | Where-Object filename -like '*exe' |
Sort-Object LastModified | Select-Object -Last 1
$latest.url
或者您可以在檢索時擴展屬性
$url = 'https://download.gimp.org/pub/gimp/v2.10/windows/'
$latesturl = Extract-FilenameFromWebsite -Url $Url | Where-Object filename -like '*exe' |
Sort-Object LastModified | Select-Object -Last 1 -ExpandProperty URL
$latesturl
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/493887.html
上一篇:從URL呼叫SelectTag
