Как проверить версию, обновить или удалить Java с помощью PowerShell?
26.10.2020
itpro
PowerShell, Windows 10, Windows Server 2016
комментариев 7
Java Runtime Environmen (JRE) достаточно широко используется для запуска различных корпоративных приложений, написанных на java. Однако некоторые программы требуют для запуска определенную версию Java и могут некорректно работать в других версиях. В этой статье мы рассмотрим, как разобраться, какие версии Java установлены на компьютерах пользователей в вашей сети, а также как удалить или обновить версию среды JRE с помощь PowerShell.
Как узнать установленную версию Java в Windows?
Вы можете получить номер версии Java, установленной на вашем компьютере, если наберете ‘ java ’ в окне поиска Windows 10 и запустите апплет Java.
В открывшемся окне «About Java» указана текущая версия JRE. В моем случае это Java Version 8 Update 231 (build 1.8.0_231-b11). Обратите внимание на значение билда JRE. Во всех версиях Java в начале указана 1, затем номер мажорной версии JRE (у меня это 8), потом номер обновления.
Также вы можете узнать текущую версию Java в панели ‘Программы и компонентах Windows’ (Win+R -> appwiz.cpl ).
Можно вывести текущую версию Java из командной строки. Запустите cmd.exe и выполните команду:
java version "1.8.0_231" Java(TM) SE Runtime Environment (build 1.8.0_231-b11) Java HotSpot(TM) Client VM (build 25.231-b11, mixed mode)
Как узнать версию Java из PowerShell?
Вы можете узнать версию Java на вашем компьютере с помощью PowerShell. Можно просто проверить версию исполняемого файла java.exe (путь к ней прописывается в переменные окружения при установке JRE SE на вашем компьютере). Выведем версию java файла:
Get-Command Java | Select-Object Version
Можно вывести подробную информацию о версии, обновлении и релизе Java:
Get-Command java | Select-Object -ExpandProperty Version
Major Minor Build Revision ----- ----- ----- -------- 8 0 2310 11
Если вам нужно получить строковое значение версии Java для использования в скриптах, используйте:
(Get-Command java | Select-Object -ExpandProperty Version).tostring()
Также вы можете узнать версию Java через WMI класс, который содержит список установленных программ в Windows:
Get-WmiObject -Class Win32_Product -Filter «Name like ‘%Java%'»
IdentifyingNumber : Name : Java 8 Update 231 Vendor : Oracle Corporation Version : 8.0.2310.11 Caption : Java 8 Update 231 IdentifyingNumber : Name : Java Auto Updater Vendor : Oracle Corporation Version : 2.8.231.11 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 скрипт. Данный скрипт может удаленно опросить сервера по списку указанному вручную, загрузить список из текстового файла. Также вы можете получить список серверов или компьютеров из AD с помощью командлета Get-ADComputer из модуля RSAT-AD-PowerShell.
# PowerShell скрипт для проверки верси Java SE (JRE) на удаленных компьютерах/серверах
# Проверить версию Java по списку компьютеров
# Проверить версию Java по списоку серверов в текстовом файле
# Получить версию Java на всех серверах домена
Get-WmiObject -Class Win32_Product -ComputerName $computers -Filter «Name like ‘%Java%’ and not Name like ‘%Java Auto Updater%’» | Select __Server, Version
В результате у вас появится табличка со списком компьютеров/серверов и версией Java на них.
В моем случае при проверке версии Java на компьютерах я нашел 35 различных версий JRE!
Скрипт PowerShell для удаления всех версий Java
Почему вам может понадобится удалять предыдущие версии Java в Windows?
- Перед установкой новой версии Java желательно удалить все предыдущие версии. Как и во всех других продуктах в Java постоянно обновляется функционал, и исправляются критические уязвимости. Если у вас установлена старая версий Java, вы подвергаете компьютер риску заражения и эксплуатации известных и 0-day уязвимостей. В Java встроен механизм автоматического обновления, но по разным причинам администраторы могут отключать его на компьютерах домена.
- У вас нет коммерческой подписки на использование Java JRE. С 2019 года Oracle изменил лицензионную политику Java. Теперь, если вы хотите использовать старые версии Oracle JDK (Java SE), вам нужно приобретать платную подписку. Это касается всех выпусков Java JRE после 16 апреля 2019 года (начиная с Java 8 SE Update 211).
Для коммерческих версий Java SE предусматривается длительная поддержка (обновление выпускаются 5 лет после выпуска). Бесплатная версия Java — Open JDK (распространяется по GPL), однако вам придётся обновлять ее раз в полгода. Еще один недостаток Open JDK – пока отсутствуют нормальные средства установки для Windows. Приходится качать и устанавливать Open JDK вручную. Есть один приемлемые вариант с установкой Open JDK с помощью менеджера пакетов Chocolatey: choco install openjdk
Следующий PowerShell скрипт можно использовать для удаление всех установленных версий Java на компьютере
$jre_installed = Get-WmiObject -Class Win32_Product -Filter «Name like ‘%Java%'»
$jre_installed.Uninstall()
Однако рассмотренная выше команда удаления основана на WMI и не смотря на свою простоту, работает довольно медленно.
Вместо этого можно получить список установленных Java из реестра и удалить все найденные версии Java по GUID продукта, который генерируется при установке ПО через MSI.
#PowerShell скрипт для удаления всех версий Java SE (JRE) на компьютере
$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
# Удаление 64 битных версий Java
if ($uninstall64) $uninstall64 = $uninstall64.UninstallString -Replace «msiexec.exe», «» -Replace «/I», «» -Replace «/X», «»
$uninstall64 = $uninstall64.Trim()
Write «Uninstalling. «
start-process «msiexec.exe» -arg «/X $uninstall64 /qb» -Wait
>
# Удаление 32 битных версий Java
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 cкрипты из этой статьи доступны в моем репозитории на GitHub https://github.com/winadm/posh/tree/master/Java.
Как скачать установить Java JRE с помощью PowerShell?
Следующий PowerShell скрипт позволяет автоматически скачать последнюю версию дистрибутива Java (можно скачать офлайн или онлайн установщик) с официального сайта и установить его на компьютере пользователя. При этом мы подавляем требование перезагрузки и отключаем автоматическое обновлений Java.
Для скачивания файла установщика с сайта используется командлет Invoke-WebRequest.
#PowerShell скрипт для автоматической загрузки и установки последней версии Java SE (JRE) на компьютере
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# скачать онлайн установщик Java
$URL = (Invoke-WebRequest -UseBasicParsing https://www.java.com/en/download/manual.jsp).Content | % < [regex]::matches($_, '(?:)').Groups[1].Value >
# скачать офлайн установщик Java
#$URL = (Invoke-WebRequest -UseBasicParsing https://www.java.com/en/download/manual.jsp).Content | % < [regex]::matches($_, '(?:)').Groups[1].Value >
Invoke-WebRequest -UseBasicParsing -OutFile jre8.exe $URL
Start-Process .\jre8.exe ‘/s REBOOT=0 SPONSORS=0 AUTO_UPDATE=0’ -wait
echo $?
Если компьютер, находится за прокси, нужно настроить PowerShell для доступа к интернету через прокси.
Первая строка в скрипте добавлена, чтобы переключиться на протокол TLS 1.2. Иначе при запуске у меня появлялась ошибка:
Invoke-WebRequest : Запрос был прерван: Не удалось создать защищенный канал SSL/TLS.
Скрипт автоматически загрузит установочный файл Java, сохранит его на диск в виде jre8.exe и установит среду JRE.
Предыдущая статья Следующая статья
Читайте далее в разделе PowerShell Windows 10 Windows Server 2016
Защита RDP от подбора паролей с блокировкой IP правилами Windows Firewall
Когда истекает пароль пользователя в AD, оповещаем пользователей о необходимости сменить пароль
Установка и настройка Windows Hyper-V Server 2019 (2016)
Вам понадобится новое приложение, чтобы открыть эту ссылку Windows Defender
Версия java как узнать
Конечно, самый простой вариант, это открыть Программы и компоненты в Панели управления, и найти в списке Java. Помимо этого, узнать установленную версию Java можно как минимум двумя способами.
Способ 1. Java Control Panel
Открываем Java Control Panel, переходим на вкладку General и нажимаем кнопку About, в открывшемся окошке находим сведения о версии.
Способ 2. Из командной строки
Открываем командную строку (это можно сделать комбинацией клавиш Win+R), вводим следующую команду и нажимаем Enter.
java -version
2.8. Java примеры – Проверить версию Java
В следующем примере показано, как проверить версию Java, установленную в вашей системе, с помощью аргумента -version и команды java.
java -version
Результат
Получим следующий результат:
java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b011) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b011, mixed mode)
Оглавление
- 1. Java примеры – Использование кода на практике
- 2. Java примеры – Окружающая среда
- 2.1. Java примеры – Скомпилировать файл
- 2.2. Java примеры – Установить путь к нескольким классам
- 2.3. Java примеры – Отладка java-файла
- 2.4. Java примеры – Установить путь к классу
- 2.5. Java примеры – Просмотреть текущий путь класса
- 2.6. Java примеры – Установить назначение файла класса
- 2.7. Java примеры – Запустить скомпилированный java-файл класса
- 2.8. Java примеры – Узнать версию Java
- 2.9. Java примеры – Установить путь к классу в .jar-файле или .zip-файле
- 3. Java примеры – Строки
- 3.1. Java примеры – Сравнить две строки
- 3.2. Java примеры – Найти последнее вхождение подстроки внутри подстроки
- 3.3. Java примеры – Удалить нужный символ из строки
- 3.4. Java примеры – Заменить символ в строке
- 3.5. Java примеры – Вывод в обратном порядке
- 3.6. Java примеры – Нахождение символа или слова в строке
- 3.7. Java примеры – Разбиение строки на слова и символы
- 3.8. Java примеры – Преобразование строки в верхний регистр
- 3.9. Java примеры – Найти слово в строке
- 3.10. Java примеры – Сравнить производительность создания строки
- 3.11. Java примеры – Оптимизировать создание строк
- 3.12. Java примеры – Форматирование строк
- 3.13. Java примеры – Конкатенация строк
- 3.14. Java примеры – Определить код Юникода символа в строке
- 3.15. Java примеры – Буферизация строк
- 4. Java примеры – Массивы
- 4.1. Java примеры – Сортировка массива и поиск элемента
- 4.2. Java примеры – Метод сортировки массива, вставить элемент в массив
- 4.3. Java примеры – Размер двумерного массива
- 4.4. Java примеры – Обратный порядок массива, переворачиваем массив
- 4.5. Java примеры – Как выводить массивы и двумерные массивы в консоль
- 4.6. Java примеры – Найти максимальный и минимальный элемент массива
- 4.7. Java примеры – Соединить два массива в один
- 4.8. Java примеры – Как заполнить массив числами
- 4.9. Java примеры – Увеличить массив после инициализации
- 4.10. Java примеры – Сравнение двух массивов
- 4.11. Java примеры – Удаление элемента из массива
- 4.12. Java примеры – Удаление массива из другого массива
- 4.13. Java примеры – Одинаковые элементы массивов
- 4.14. Java примеры – Поиск в массиве
- 4.15. Java примеры – Равенство двух массивов
- 4.16. Java примеры – Сравнить массивы
- 5. Java примеры – Дата и время
- 5.1. Java примеры – Форматирование времени в формате AM-PM
- 5.2. Java примеры – Получение названия и номера текущего месяца
- 5.3. Java примеры – Получить текущее время в часах и минутах
- 5.4. Java примеры – Вывести текущее время и дату
- 5.5. Java примеры – Вывести текущее время в 24-часовом формате
- 5.6. Java примеры – Получить текущий месяц
- 5.7. Java примеры – Получить текущие секунды
- 5.8. Java примеры – Получить короткое название месяца
- 5.9. Java примеры – Получить день недели
- 5.10. Java примеры – Добавление времени к дате
- 5.11. Java примеры – Отображение времени в формате другой страны
- 5.12. Java примеры – Отображение времени на разных языках
- 5.13. Java примеры – Прокрутить часы и месяцы
- 5.14. Java примеры – Получить номер недели и месяц в году
- 5.15. Java примеры – Форматы текущей даты
- 6. Java примеры – Методы
- 6.1. Java примеры – Перезагрузка методов
- 6.2. Java примеры – Вывод массива с использованием метода
- 6.3. Java примеры – Решение Ханойской башни
- 6.4. Java примеры – Последовательность чисел Фибоначчи
- 6.5. Java примеры – Вычисление факториала числа
- 6.6. Java примеры – Переопределение метода
- 6.7. Java примеры – Вывод массива с использованием метода
- 6.8. Java примеры – Использование оператора break
- 6.9. Java примеры – Использование оператора continue
- 6.10. Java примеры – Использование метки в методе
- 6.11. Java примеры – Использование операторов enum и switch
- 6.12. Java примеры – Использование конструктора enum
Как в Android Studio узнать и поменять версию java?
В Intelij IDEA это можно сделать, зайдя в Progect Structure — Progect (если, конечно я правильно трактую то, что вижу): Но в Android Studio, при переходе по тому же пути находится совершенно другая информация:
Отслеживать
задан 8 авг 2020 в 10:56
Николай Семенов Николай Семенов
794 1 1 золотой знак 10 10 серебряных знаков 38 38 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Android по дефолту использует Java версии 1.6. Если вы хотите подключить Java 8 версии вы можете в
android < . compileOptions < sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 >kotlinOptions < jvmTarget = JavaVersion.VERSION_1_8.toString() >>
Android не использует других версий Java, поэтому фактически вы не можете как-либо менять версию.
UPD: Как дополнил @IR42
Начиная с Android Studio 4.0 для получения больших возможностей Java 8 можно добавить ключ
compileOptions
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.10'