Computer >> 컴퓨터 >  >> 체계 >> Windows Server

PowerShell을 사용하여 Windows에서 Java 버전을 확인하거나 업데이트하는 방법은 무엇입니까?

자바 런타임 환경(JRE) 사용자 컴퓨터에서 다양한 엔터프라이즈 Java 앱을 실행하는 데 널리 사용됩니다. 그러나 일부 앱에는 특정 Java 버전이 필요하며 다른 버전에서는 제대로 작동하지 않을 수 있습니다. 이 기사에서는 네트워크의 컴퓨터에 설치된 Java 버전을 확인하는 방법과 PowerShell을 사용하여 JRE를 제거하거나 업데이트하는 방법에 대해 설명합니다.

Windows에서 Java 버전을 확인하는 방법

java를 입력하면 컴퓨터에 설치된 Java의 버전 번호를 알 수 있습니다. Windows 10 검색창에서 자바 애플릿을 실행하세요.

PowerShell을 사용하여 Windows에서 Java 버전을 확인하거나 업데이트하는 방법은 무엇입니까?

자바 정보에서 창에서 현재 JRE 버전이 지정됩니다. 제 경우에는 Java Version 8 Update 261 (build 1.8.0_261-b12)입니다. . JRE 빌드의 값을 확인하십시오. 모든 자바 버전에는 1이 있습니다. 시작 부분에 주요 JRE 버전 번호가 옵니다(8). 제 경우) 및 업데이트 번호.

PowerShell을 사용하여 Windows에서 Java 버전을 확인하거나 업데이트하는 방법은 무엇입니까?

Windows 프로그램 및 기능(Win+R -> appwiz.cpl)에서 현재 Java 버전을 확인할 수도 있습니다. ).

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가 컴퓨터에 설치될 때 환경 변수에 설정됩니다). 자바 파일 버전 표시:

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(Windows에 설치된 프로그램 목록 포함)를 통해 Java 버전을 찾을 수도 있습니다.

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 Auto Updater 없이 Java 버전만 표시하려면 다음 명령을 사용하십시오.

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가 설치되어 있는 경우 컴퓨터가 감염되거나 알려진 또는 0일 취약점에 노출될 수 있습니다. Java에는 자동 업데이트 메커니즘이 내장되어 있지만 여러 가지 이유로 관리자는 도메인 컴퓨터에서 이를 비활성화할 수 있습니다.
  • 유료 Java JRE 구독이 없습니다. 2019년 Oracle은 Java 라이선스 정책을 변경했습니다. 이전 Oracle JDK(Java SE) 버전을 사용하려면 유료 구독을 받아야 합니다. 2019년 4월 16일 이후의 모든 Java JRE 릴리스(Java 8 SE Update 211부터)를 나타냅니다.
    상용 Java SE 버전은 장기간 지원됩니다(업데이트 릴리스 날짜 이후 5년). 무료 자바 버전은 Open JDK입니다. (GPL에 따라 배포됨) 하지만 6개월마다 업데이트해야 합니다. 또 다른 Open JDK  단점은 편리한 Windows용 설치 프로그램이 없다는 것입니다. Open JDK를 수동으로 다운로드하여 설치해야 합니다. Chocolatey 패키지 관리자를 사용하여 Open JDK를 설치하는 좋은 옵션이 있습니다. choco install openjdk

다음 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을 구성합니다.

# 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 title="Download Java software for Windows Online" 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 title="Download Java software for Windows Offline" 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 설치 프로그램에 대한 링크를 얻을 수 없습니다. 아마도 Oracle은 이것을 곧 변경할 것입니다.