PowerShell脚本匹配Power BI版本号返回True却无法获取结果,求助
解决PowerShell脚本获取Power BI版本号的问题
你的脚本里正则匹配部分存在两个关键问题,导致无法获取具体版本号:
- 正则中的
.是通配符,可匹配任意字符,若要匹配版本号里的点号,必须转义成\. - 未给版本号内容添加捕获分组,因此
$Matches[1]取不到对应值
将正则部分修改为"(\d+\.\d+\.\d+\.\d+) "即可解决问题:用\d+确保每个版本段至少包含一位数字,括号将整个版本号包裹为捕获组,这样$Matches[1]就能直接拿到完整的版本号。
修正后的完整脚本:
$Uri = 'https://aka.ms/pbiSingleInstaller' $web = Invoke-WebRequest -Uri $uri $url=$web.Links | Where-Object href -Like "*confirmation*" | Select-Object -expand href $downloadurlid = "https://www.microsoft.com/en-us/download/" + $url $idcontent = Invoke-WebRequest -Uri $downloadurlid $downloadurl = $idcontent.Links | Where-Object href -Like "*x64.exe" | Select-Object -First 1 -expand href $a = $web.Content if ($a -match "(\d+\.\d+\.\d+\.\d+) ") { $latestversion = $Matches[1] $FileName = $downloadurl.Split('/')[-1] # 输出验证结果 Write-Host "最新版本号:$latestversion" Write-Host "安装包文件名:$FileName" } else { Write-Host "未匹配到版本号" }
额外建议:增加if判断匹配结果会更稳妥,避免匹配失败时$latestversion为空的情况。
内容的提问来源于stack exchange,提问作者atefeh kasiri
相关产品推荐
相关产品推荐

