Как получить версию 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 там, где это не нужно.

Ответы на вопрос(2)

Ваш ответ на вопрос