我想獲取最新版本的軟體并檢查系統上安裝的版本是否更新安裝新版本。
''' $web = Invoke-WebRequest -Uri "https://www.webex.com/downloads/jabber/jabber-vdi.html" ($latest = $web.AllElements | Where-Object {$_.TagName - eq "li"} | Select-String "Jabber Windows 客戶端" | Select -first 1 )'''
為了獲取版本號和網址,我已經寫了這些但不起作用
''' ($latestversion = $latest.Context | Select-String -pattern "\d\d.\d") ($downloadUrl=$latest.Context | Select-String -pattern "\w.msi" )'' '
我也嘗試過這種方式但不起作用
'''$latestversion = $latest.links.href '''
uj5u.com熱心網友回復:
您可以使用 Links 屬性查看所有檢索到的鏈接,然后對其進行過濾以僅選擇以“msi”結尾的鏈接
(Invoke-WebRequest -Uri "https://www.webex.com/downloads/jabber/jabber-vdi.html").Links | Where-Object href -like '*msi' | select -First 1 | select -expand href
編輯:要同時獲得,也許像這樣使用 ParsedHtml :
(Invoke-WebRequest -Uri "https://www.webex.com/downloads/jabber/jabber-vdi.html").ParsedHtml.body.getElementsByClassName('vdi-links')[0].innerHTML -match "<LI>(\d{1,2}\.\d).*(https.*msi)"
write-host "Version $($Matches[1]) available at $($Matches[2])"
$Matches是一個包含-match正則運算式結果的自動變數。匹配中的括號定義了我們的匹配組,所以對于我們的正則運算式"<LI>(\d{1,2}\.\d).*(https.*msi)":
我們的第一個匹配是(\d{1,2}\.\d)任何\d數字,{1,2} 表示匹配 1 或 2(所以我們可以匹配“9”或“10”),\.匹配點字符的字面意思
我們的第二個匹配是(https.*msi)where.匹配任何字符,*means 匹配任意數量的出現。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/483955.html
