从远程服务器的PowerShell获取Java版本
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了从远程服务器的PowerShell获取Java版本,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2428字,纯文字阅读大概需要4分钟。
内容图文
![从远程服务器的PowerShell获取Java版本](/upload/InfoBanner/zyjiaocheng/946/b11b9d3cc57c4e799e72fd0bf1cca166.jpg)
我正在尝试在PowerShell中编写一个脚本,该脚本将在远程计算机上使用带有凭据的invoke命令来执行代码,该代码将返回包含该计算机上Java版本的字符串.没有安装Java,有时它只是作为JDK文件夹放置在服务器中,并且应用程序指向该位置,因此很遗憾,我无法使用注册表来查找Java版本.我想到的唯一想法是从invoke命令中按照以下方式进行调用:
& "path_to_java.exe" "-version"
甚至更复杂的东西,然后使用正则表达式查找版本:
start-process $java -ArgumentList "-version" -NoNewWindow -Wait -RedirectStandardError "$path\tempoutput.txt"
$javaversionoutput = gc "$path\tempoutput.txt"
del "$path\tempoutput.txt"
但是,在某些服务器上,我一直遇到一个问题,即抱怨没有足够的堆空间来运行该Java版本命令(通过该远程服务器上的invoke命令).
Error occurred during initialization of VM
Could not reserve enough space for object heap
D:\Java\jdk1.6.0_39\bin\java.exe
Could not create the Java virtual machine.
+ CategoryInfo : NotSpecified: (Could not creat...irtual machine.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
+ PSComputerName : <server>
根据我的研究,它与为远程PowerShell会话设置的MaxMemoryPerShellMB有关.在某些服务器上,它设置为150,在某些服务器上,它设置为1024.所以有时我可以成功地从PowerShell远程会话中运行java -version来运行,有时却不能,因为内存太少了.如果我通过登录并手动执行在远程计算机上进行设置:
winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="1000"}
它开始工作.但是我不能每次都去每个服务器并手动设置它.如果我尝试通过invoke命令设置MaxMemoryPerShellMB,它说我没有访问权限,即使登录并直接执行操作也可以使用同一帐户更改服务器上的MaxMemoryPerShellMB.
我觉得我用完了所有解决方案,希望能在这里找到帮助.抱歉,如果有一个相关主题,我只发现了三个,但没有一个回答我的问题.如果您有兴趣,请参考以下内容.我真的找不到任何东西:P
> Running Java remotely using PowerShell
> How to get the Java version in PowerShell
> Cannot run Java from the Windows PowerShell command prompt
解决方法:
老实说,我只是检查文件java.exe的版本,例如
$Machines = Get-Content C:\Lists\Servers.txt
$Machines | for-each{
$java = gci '\\$_\c$\Program Files (x86)\Java\jre7\bin\java.exe'
$java.VersionInfo
然后您得到一个VersionInfo对象,类似
ProductVersion FileVersion FileName
-------------- ----------- --------
7.0.510.13 7.0.510.13 \\$_\c$\Program Files (x86)\Java\jre7\bin\java.exe
或者,如果找不到路径,则可能为$null(当然,您可以首先使用test-path进行检查,但无论如何).好消息是,您可以选择使用VersionInfo对象进行实际操作,这是powershell的令人敬畏的好处之一. Java很烂.
内容总结
以上是互联网集市为您收集整理的从远程服务器的PowerShell获取Java版本全部内容,希望文章能够帮你解决从远程服务器的PowerShell获取Java版本所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。