当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用 PowerShell 在 Windows 中检查或更新 Java 版本?

作者:精品下载站 日期:2024-12-14 22:54:33 浏览:15 分类:玩电脑

如何使用 PowerShell 在 Windows 中检查或更新 Java 版本?


Java 运行时环境 (JRE) 广泛用于用户计算机上以运行不同的企业 Java 应用程序。但是,某些应用程序需要特定的 Java 版本,并且在其他版本中可能无法正常工作。在本文中,我们将讨论如何检查网络中计算机上安装的 Java 版本,以及如何使用 PowerShell 卸载或更新 JRE。

如何在Windows中检查Java版本?

输入以下命令即可获取计算机上安装的 Java 版本号

java

在 Windows 10 搜索框中并运行 Java 小程序。

[玩转系统] 如何使用 PowerShell 在 Windows 中检查或更新 Java 版本?

关于Java窗口中,指定了当前的JRE版本。就我而言,是

Java Version 8 Update 261 (build 1.8.0_261-b12)

。请注意 JRE 构建的值。所有 Java 版本都以 1 开头,后跟主要 JRE 版本号(在我的例子中为 8)和更新号。

[玩转系统] 如何使用 PowerShell 在 Windows 中检查或更新 Java 版本?

您还可以在 Windows 程序和功能中检查当前的 Java 版本(Win+R ->

appwiz.cpl

)。

[玩转系统] 如何使用 PowerShell 在 Windows 中检查或更新 Java 版本?

您可以在命令提示符中显示当前的 Java 版本。跑步

cmd.exe

并运行命令:

java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) Client VM (build 25.261-b12, mixed mode, sharing)

[玩转系统] 如何使用 PowerShell 在 Windows 中检查或更新 Java 版本?

使用 PowerShell 检查 Java 版本

您可以使用 PowerShell 检查计算机上安装的 Java 版本。您只需检查可执行文件的版本即可

java.exe

(当计算机上安装 JRE SE 时,它的路径在环境变量中设置)。显示java文件版本:

Get-Command Java | Select-Object Version

[玩转系统] 如何使用 PowerShell 在 Windows 中检查或更新 Java 版本?

您可以查看有关 Java 版本、更新和发行号的详细信息:

Get-Command java | Select-Object -ExpandProperty Version
Major Minor Build Revision
----- ----- ----- --------
8 0 2610 12

如果您想获取要在脚本中使用的 Java 版本的字符串值,请使用以下命令:

(Get-Command java | Select-Object -ExpandProperty Version).tostring()

[玩转系统] 如何使用 PowerShell 在 Windows 中检查或更新 Java 版本?

您还可以通过 WMI 类 Win32_Product 找到您的 Java 版本(包含 Windows 中已安装程序的列表):

Get-WmiObject -Class Win32_Product -Filter "Name like '%Java%'"

[玩转系统] 如何使用 PowerShell 在 Windows 中检查或更新 Java 版本?

IdentifyingNumber : {26A24AE4-039D-4CA4-87B4-2F32180261F0}
Name : Java 8 Update 261
Vendor : Oracle Corporation
Version : 8.0.2610.12
Caption : Java 8 Update 261

IdentifyingNumber : {4A03706F-666A-4037-7777-5F2748764D10}
Name : Java Auto Updater
Vendor : Oracle Corporation
Version : 2.8.261.12
Caption : Java Auto Updater

稍后可以使用这些 ID 来正确卸载 JRE。

如果您只想显示 Java 版本而不显示 Java Auto Updater,请使用以下命令:

Get-WmiObject -Class Win32_Product -Filter "Name like '%Java%' and not Name like '%Java Auto Updater%'" | Select -Expand Version

PowerShell - 检查远程计算机上的 Java 版本

如果您希望获得域中所有计算机或服务器上使用的 Java 版本,可以使用以下 PowerShell 脚本。该脚本可以根据您手动输入的列表或从文本文件中远程获取所有服务器的信息。您还可以使用 RSAT-AD-PowerShell 模块中的 Get-ADComputer cmdlet 获取 AD 中的服务器或计算机列表。

# PowerShell script to check Java SE (JRE) version on remote computers
# To check Java version on the computers in the list
# $computers = @('mun-sql01,mun-fs01,mun-sql02')
# Check Java version against the list of servers in a text file
#$computers=Get-content C:\PS\ServerList.txt
# To get Java version on all Windows Servers in AD domain
$computers = ((get-adcomputer -Filter { enabled -eq “true” -and OperatingSystem -Like ‘*Windows Server*’ }).name).tostring()
Get-WmiObject  -Class Win32_Product -ComputerName $computers -Filter “Name like ‘%Java%’ and not Name like ‘%Java Auto Updater%'” | Select __Server, Version

[玩转系统] 如何使用 PowerShell 在 Windows 中检查或更新 Java 版本?

因此,您将获得一个表格,其中包含计算机/服务器及其上安装的 Java 版本的列表。

就我而言,当检查域计算机上的 Java 版本时,我发现了 24 个不同的 JRE 版本!

用于卸载所有 Java 版本的 PowerShell 脚本

为什么您可能需要在 Windows 中卸载以前的 Java 版本?

  • 在安装新的 Java 版本之前,最好卸载所有以前的版本。与其他产品一样,Java 中不断出现新功能并修复关键漏洞。如果您安装了旧版本的 Java,您的计算机可能会受到已知漏洞或 0day 漏洞的感染或利用。 Java 有一个内置的自动更新机制,但出于不同的原因,管理员可能会在域计算机上禁用它。

  • 您没有付费的 Java JRE 订阅。 2019 年,Oracle 更改了 Java 许可政策。如果您想使用以前的 Oracle JDK (Java SE) 版本,则必须付费订阅。它指的是 2019 年 4 月 16 日之后的所有 Java JRE 版本(来自 Java 8 SE Update 211)。

    商业Java SE版本拥有长期支持(自发布之日起5年内发布更新)。免费的 Java 版本是Open JDK(根据 GPL 分发),但您必须每六个月更新一次。 Open JDK 的另一个缺点是它没有方便的 Windows 安装程序。您必须手动下载并安装 Open JDK。有一个不错的选择可以使用 WinGet 包管理器安装 Open JDK:

    winget install --id=ojdkbuild.openjdk.11.jdk -e 

您可以使用以下 PowerShell 脚本删除本地计算机上所有已安装的 Java 版本:

$jre_installed = Get-WmiObject -Class Win32_Product -Filter "Name like '%Java%'"
$jre_installed.Uninstall()

然而,上面的卸载命令是基于WMI的,并且运行缓慢。

相反,您可以从注册表中获取已安装 Java 版本的列表,并通过通过 MSI 安装软件时生成的产品 GUID 来卸载所有版本。


#PowerShell script to uninstall all Java SE (JRE) versions on a computer
$uninstall32 = gci "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" | foreach { gp $_.PSPath } | ? { $_ -like "*Java*" } | select UninstallString
$uninstall64 = gci "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" | foreach { gp $_.PSPath } | ? { $_ -like "*Java*" } | select UninstallString
# Uninstall 64-bit Java versions
if ($uninstall64) {
$uninstall64 = $uninstall64.UninstallString -Replace "msiexec.exe", "" -Replace "/I", "" -Replace "/X", ""
$uninstall64 = $uninstall64.Trim()
Write "Uninstalling Java ..."
start-process "msiexec.exe" -arg "/X $uninstall64 /qb" -Wait
}
# Uninstall 32-bit Java versions
if ($uninstall32) {
$uninstall32 = $uninstall32.UninstallString -Replace "msiexec.exe","" -Replace "/I","" -Replace "/X",""
$uninstall32 = $uninstall32.Trim()
Write "Uninstalling all Java SE versions..."
start-process "msiexec.exe" -arg "/X $uninstall32 /qb" -Wait
}

[玩转系统] 如何使用 PowerShell 在 Windows 中检查或更新 Java 版本?

如何使用 PowerShell 下载并安装 Java JRE?

以下PowerShell脚本会自动从官方网站下载最新版本的Java安装程序并将其安装在计算机上(您可以下载在线和离线安装程序)。 install 命令会抑制重新启动请求并禁用自动 Java 更新。

要从网站下载安装程序文件,请使用 Invoke-WebRequest cmdlet。如果您的计算机位于代理后面,请将 PowerShell 配置为通过代理服务器访问 Internet。

# PowerShell script to automatically download and install the latest Java SE (JRE) version
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# Download an online Java installer
$URL = (Invoke-WebRequest -UseBasicParsing https://www.java.com/en/download/manual.jsp).Content | % { [regex]::matches($_, '(?:<a  href=")(.*)(?:">)').Groups[1].Value }
# Download an offline Java installer
#$URL = (Invoke-WebRequest -UseBasicParsing https://www.java.com/en/download/manual.jsp).Content | % { [regex]::matches($_, '(?:<a  href=")(.*)(?:">)').Groups[1].Value }
Invoke-WebRequest -UseBasicParsing -OutFile jre8.exe $URL
Start-Process .\jre8.exe '/s REBOOT=0 SPONSORS=0 AUTO_UPDATE=0' -wait
echo $?

添加脚本中的第一行以使用 TLS 1.2。否则,我会出现以下错误:

Invoke-WebRequest: The request was aborted: Could not create SSL/TLS secure channel.

该脚本将自动下载 Java 安装文件,将其保存在磁盘上并命名为 jre8.exe 并安装。

不幸的是,这种从 Oracle 网站获取 JRE 安装文件的方法几周前就停止工作了。现在这个网页是由一些 .js 脚本生成的。我无法获取 java 安装程序的链接。也许甲骨文很快就会改变这一点。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯