当前位置: 首页 > 面试题库 >

如何在PowerShell中获取Java版本

杨超
2023-03-14
问题内容

我正在尝试在PowerShell中获取Java版本。版本字符串将打印到 stderr ,因此我试图将其重定向到stdout并将其分配给字符串变量。

我收到以下奇怪的错误:

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。


问题答案:

一种方法是使用WMI:

$javaver =  Get-WmiObject -Class Win32_Product -Filter "Name like 'Java(TM)%'" | Select -Expand Version

另一个是使用启动过程重定向到文件

start-process  java  -ArgumentList "-version" -NoNewWindow -RedirectStandardError .\javaver.txt

$javaver = gc .\javaver.txt

del .\javaver.txt

我的最后一个是:

dir "HKLM:\SOFTWARE\JavaSoft\Java Runtime Environment"  | select -expa pschildname -Last 1

关于这种情况下stderr的重定向方式,您可以执行以下操作:

$out = &"java.exe" -version 2>&1
$out[0].tostring()


 类似资料:
  • 问题内容: 不使用任何外部库,将网站的HTML内容提取为String的最简单方法是什么? 问题答案: 我目前正在使用此: 但不确定是否有更好的方法。

  • 我在做一个项目。我用JAVA(.exec())抓取了PowerShell版本。 它显示,但我想打印唯一的版本,这是一个在底部。我怎么能那么做? 以下内容的代码块:

  • 问题内容: 我正在尝试从ArrayList中获取值。这是我的代码示例: 修订版感谢所有答案,我可能应该在代码中添加更多内容。在Car类中,我有另一种方法来计算包括税金在内的总费用。 在主要班级 再次感谢 问题答案: 假设您的课程有价格的吸气剂方法,则可以简单地使用 元素的索引在哪里。 您也可以使用 如果需要存储,还需要从函数中返回 主要 并更改您的功能类型

  • 问题内容: 在Objective-C中,我用于获取父URL。在Java中这相当于什么? 问题答案: 我能想到的最短的代码段是这样的:

  • 我编写了一个servlet过滤器,在其中我试图获得自定义header=samlRequest的值,从rest客户机/Postman chrome插件中我获得了samlRequest的值,但是使用ajax调用我提供了samlRequest键及其值,但是在java中,我在“access-control-request-headers”中获得了唯一的键samlRequest,如何获得samlReques

  • 在Objective-C中,我使用获取父URL。这在Java中的等价物是什么?