PowerShell ISE:执行java -version时奇怪的输出

问题描述 投票:0回答:1

在我的Powershell脚本之一中-在启动Java程序之前-我正在回显所使用的Java版本。 PS代码看起来非常无害,如下所示:

...
Write-Output "Java version:"
Write-Output "-------------"
java -version
...

当我在普通的Powershell窗口中或作为启动脚本的一部分执行时,以上代码段非常有效。输出符合预期:

Java version:
-------------
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

但是当我在PowerShell ISE中执行完全相同的操作时(我通常喜欢使用它,因为它在开发和调试脚本时通常非常有用和方便),我得到:

Java version:
-------------
java : java version "1.8.0_202"
At D:\Projects\gwtp-demo\mms-specifics\etc\powershell\define_gwtp-demo_profile.ps1:50 char:1
+ java -version
+ ~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (java version "1.8.0_202":String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

这里怎么了?为什么我在这里得到这个额外的PS乱码?似乎PS(或ISE?)正在试图以某种方式解释该输出(当然这不是我想要或期望的)。为了避免这种额外的输出,我将如何称呼它为“正确”(以PS术语)?

powershell powershell-ise
1个回答
0
投票

任何写入标准错误的命令都会在ISE中生成远程异常(或invoke-command)。例如,将标准错误重定向到$ null将导致没有输出:

java -version 2>$null
© www.soinside.com 2019 - 2024. All rights reserved.