Как получить версию Java в PowerShell
Я пытаюсь получить версию Java в PowerShell. Строка версии печатается вSTDERR, поэтому я пытаюсь перенаправить его на стандартный вывод и назначить его для строковой переменной.
Я получаю следующую странную ошибку:
PS P:\> & java -version 2>&1
java.exe : java version "1.7.0_25"
At line:1 char:2
+ & <<<< java -version 2>&1
+ CategoryInfo : NotSpecified: (java version "1.7.0_25":String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Java(TM) SE Runtime Environment (build 1.7.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)
Вызов без перенаправления (2> & 1) дает это:
PS P:\> & java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)
Я думаю, что Java здесь не имеет значения, и то же самое произошло бы для любой другой программы, печатающей строки в stderr.
Используемая версия PowerShell:2,0.
Вопросов:
Как я могу перенаправить stderr в переменную?Или, в качестве альтернативы, как я могу проверить установленную версию Java?Временное решение
Я могу запустить это так:
$output = & cmd /c "java -version 2>&1"
Но я ненавижу запускать cmd.exe там, где это не нужно.