【发布时间】:2020-04-11 12:56:52
【问题描述】:
在我的一个 powershell 脚本中 - 在启动 Java 程序之前 - 我正在回显正在使用的 Java 版本。 PS 代码看起来很无害,如下所示:
...
Write-Output "Java version:"
Write-Output "-------------"
java -version
...
当我在普通的 powershell 窗口中执行或作为启动脚本的一部分执行时,上面的 sn-p 可以完美运行。输出如预期:
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 术语)以避免这种额外的输出?
【问题讨论】:
-
它将来自
java -version的响应视为命令