我想知道是否有办法使用 PowerShell 找到最新版本的 Firefox(稳定版)?
我只想以纯文本形式获取最新版本号,不需要链接或测试版本等。
答案1
PS 3 及以上版本的解决方案
$ff = Invoke-WebRequest "*https://product-details.mozilla.org/1.0/firefox_versions.json*" | ConvertFrom-Json
$ff.psobject.properties.value[-1]
最新版本可以在https://product-details.mozilla.org/1.0/firefox_versions.json
这包含
{
"FIREFOX_NIGHTLY": "56.0a1",
"FIREFOX_AURORA": "54.0a2",
"FIREFOX_ESR": "52.2.1esr",
"FIREFOX_ESR_NEXT": "",
"LATEST_FIREFOX_DEVEL_VERSION": "55.0b8",
"LATEST_FIREFOX_OLDER_VERSION": "3.6.28",
"LATEST_FIREFOX_RELEASED_DEVEL_VERSION": "55.0b8",
"LATEST_FIREFOX_VERSION": "54.0.1"
}
Invoke-WebRequest cmdlet 发送 HTTPS 请求以返回 Json 文件,该文件需要从 JavaScript 对象表示法 (JSON) 格式的字符串转换为自定义 PSCustomObject。
Json 有一个 Name 字段和 Value 字段,最后一行包含 LATEST_FIREFOX_VERSION 和 54.0.1
您想要版本号(值)作为最后一行,您可以使用 [-1] 请求 PowerShell 数组中的最后一个元素
第一行 FIREFOX NIGHTLY 56.0a1 使用 [0],然后对接下来的每一行增加。或者从 [-1] 减少到 [-2],即倒数第二行
答案2
我使用以下脚本将在线可用的最新版本与安装的 Firefox 版本(针对 SCCM 应用程序类型检测规则)进行比较:
$FFInstalled = (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Mozilla\Mozilla Firefox' | Select 'CurrentVersion').CurrentVersion
$FFLatest = ( Invoke-WebRequest "https://product-details.mozilla.org/1.0/firefox_versions.json" -UseBasicParsing | ConvertFrom-Json ).LATEST_FIREFOX_VERSION
If ($FFInstalled -match $FFLatest) {$true} Else {$null}
如果这些版本匹配,则返回真的如果没有,则不返回任何内容,或者返回错误(如果该注册表项不存在)。
简而言之,回答您的版本,您可以使用代码的第二行来获取最新的在线信息。
答案3
我一直在编写一些 PowerShell 脚本,用于从我使用的第三方产品的供应商网站提取版本信息。我之前曾使用 FileHippo 作为中心点创建过这样的脚本,但我想尝试一些更具挑战性的东西。
这将为您提供当前版本的 Firefox、发布日期和每个架构的直接 URL。如果对您有帮助,请务必使用其中的任何部分。
function Get-OnlineVerFirefox
{
[cmdletbinding()]
param (
[Parameter(Mandatory=$false,
Position=0)]
[switch]
$Quiet
)
begin
{
# Initial Variables
$SoftwareName = "Mozilla Firefox"
$uri = 'https://product-details.mozilla.org/1.0/firefox_versions.json'
$hashtable = [ordered]@{
'Software_Name' = $softwareName
'Software_URL' = $uri
'Online_Version' = 'UNKNOWN'
'Online_Date' = 'UNKNOWN'
'Download_URL_x64' = 'UNKNOWN'
'Download_URL_x86' = 'UNKNOWN'
}
$swObject = New-Object -TypeName PSObject -Property $hashtable
}
Process
{
# Get the Version & Release Date
try
{
Write-Verbose -Message "Attempting to pull info from the below URL: `n $URI"
$uri = 'https://product-details.mozilla.org/1.0/firefox_versions.json'
$FirefoxVersion = Invoke-WebRequest $uri -UseBasicParsing | ConvertFrom-Json | select -ExpandProperty LATEST_FIREFOX_vERSION
$FirefoxDate = (Invoke-WebRequest 'https://product-details.mozilla.org/1.0/firefox_history_stability_releases.json' -UseBasicParsing | ConvertFrom-Json) | select -ExpandProperty $FirefoxVersion
$FirefoxDownloadX64 = "https://download-origin.cdn.mozilla.net/pub/firefox/releases/" + $FirefoxVersion + "/win64/en-US/Firefox%20Setup%20" + $FirefoxVersion + ".exe"
$FirefoxDownloadX86 = "https://download-origin.cdn.mozilla.net/pub/firefox/releases/" + $FirefoxVersion + "/win32/en-US/Firefox%20Setup%20" + $FirefoxVersion + ".exe"
$swObject.Online_Version = $FirefoxVersion
$swobject.Online_Date = $FirefoxDate
}
catch
{
Write-Verbose -Message "Error accessing the below URL: `n $URI"
$message = $("Line {0} : {1}" -f $_.InvocationInfo.ScriptLineNumber, $_.exception.message)
$swObject | Add-Member -MemberType NoteProperty -Name 'ERROR' -Value $message
}
finally
{
# Get the Download URLs
if ($swObject.Online_Version -ne 'UNKNOWN')
{
$swobject.Download_URL_X64 = $FirefoxDownloadX64
$swobject.Download_URL_X86 = $FirefoxDownloadX86
}
}
}
End
{
# Output to Host
if ($Quiet)
{
Write-Verbose -Message '$Quiet was specified. Returning just the version'
Return $swObject.Online_Version
}
else
{
Return $swobject
}
}
} # END Function Get-OnlineVerFirefox
以下是输出示例。您可以将输出的部分内容作为传递变量等。
PS C:\> Get-OnlineVerFirefox.ps1
Software_Name : Mozilla Firefox
Software_URL : https://product-details.mozilla.org/1.0/firefox_versions.json
Online_Version : 61.0.2
Online_Date : 2018-08-08
Download_URL_x64 : https://download-origin.cdn.mozilla.net/pub/firefox/releases/61.0.2/win64/en-US/Firefox%20Setup%2061.0.2.exe
Download_URL_x86 : https://download-origin.cdn.mozilla.net/pub/firefox/releases/61.0.2/win32/en-US/Firefox%20Setup%2061.0.2.exe
PS C:\> Get-OnlineVerFirefox -Quiet
61.0.2