【发布时间】:2017-10-19 17:22:55
【问题描述】:
我有一个问题 wmi4java 库: 它可以连接到远程 Win 机器并在那里运行 WMI 查询吗?搜索了文档,甚至查看了主类的源代码,没有发现任何指向远程连接和身份验证的东西。
github 页面没有提供连接远程机器的示例: https://github.com/profesorfalken/WMI4Java
WMI4Java 类的 javadoc 仅提及 localhost:
https://jar-download.com/java-documentation-javadoc.php?a=WMI4Java&g=com.profesorfalken&v=1.6
例如: WMI4Java.get().computerName(".").namespace("root/cimv2").getWMIObject("Win32_BaseBoard");
如果我指定另一个主机(又名 computerName("10.10.172.214")...),它显然会抛出异常,因为它没有找到凭据。
我知道这个库在内部使用 jPowerShell,所以一定有办法。 谢谢。
【问题讨论】:
-
我建议您使用 WinRM 而不是 WMI(它更容易且强大)。 stackoverflow.com/questions/4610063/… 也可能有帮助
-
感谢 RC。我们将在未来的版本中使用 WinRM,但现在我们使用 j-interop,它在客户的防火墙中失败,因为此库使用已弃用且不安全的协议 SMBv1。因此,我希望将 j-interop 替换为 wmi4java 作为解决客户问题的临时解决方法。但为此我需要能够连接到远程 Win 机器,我的挑战来了。
-
我明白了,恕我直言,您应该寻找另一个替代库。也许github.com/chenlichao-cn/wmi4j(通过谷歌找到,似乎可以满足您的需求)
-
RC 谢谢你,很好的建议。我一定会去探索的。乍一看,它似乎并不依赖于安装在同一台机器上的 PowerShell。
-
wmi4j 在内部使用 j-interop,这让我回到了第一方。无法使用 jinterop,因为它在后台使用 SMBv1,并且任何防火墙在检测到具有此不安全协议的数据包时都会重置连接。
标签: java powershell wmi