Cómo obtener la versión de Java en PowerShell

Estoy tratando de obtener la versión de Java en PowerShell. La cadena de versión se imprime aStderr, entonces estoy tratando de redirigirlo a stdout y asignarlo a una variable de cadena.

Me sale el siguiente error extraño:

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)

Llamar sin redireccionar (2> & 1) da esto:

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)

Creo que Java aquí es irrelevante, y lo mismo sucedería con cualquier otro programa que imprima cadenas a stderr.

La versión de PowerShell que uso es2.0.

Preguntas:

¿Cómo puedo redireccionar stderr a una variable?O, alternativamente, ¿cómo puedo verificar la versión de Java instalada?

Solución

Puedo correrlo así:

$output = & cmd /c "java -version 2>&1"

Pero odio ejecutar un cmd.exe donde no debería ser necesario.

Respuestas a la pregunta(2)

Su respuesta a la pregunta