gpt4 book ai didi

powershell - PowerShell ISE:执行Java -version时输出奇怪

转载 作者:行者123 更新时间:2023-12-03 01:27:34 24 4
gpt4 key购买 nike

在我的一个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术语)?

最佳答案

任何写入标准错误的命令都将在ISE中生成远程异常(或invoke-command)。 ISE创建一个运行空间来运行命令。例如,将标准错误重定向到$ null不会产生任何输出:

java -version 2>$null

解决方法:
java -version 2>&1 | select-string version

java version "1.8.0_241"

或使用get-package,它可以应用于任何软件:
get-package '*java 8*'

Name Version Source ProviderName
---- ------- ------ ------------
Java 8 Update 241 8.0.2410.7 C:\Program Files (x86)\Java\j... msi

顺便说一句,由于许可证更改,您可能要切换到OpenJDK / AdoptOpenJDK。

Vscode不会像这样。

关于powershell - PowerShell ISE:执行Java -version时输出奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61157157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com