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.