通过 Java 远程运行 Powershell 脚本
Posted
技术标签:
【中文标题】通过 Java 远程运行 Powershell 脚本【英文标题】:Running Powershell script remotely through Java 【发布时间】:2017-03-14 01:52:09 【问题描述】:我可以通过 Powershell 本身运行以下 powershell 命令,
invoke-command -ComputerName "compName" -filepath "c:\script.ps1" -credential "admin"
但是当我尝试通过 Java 运行它时,我得到一个错误。听起来“调用命令”不被识别为通过 Java 运行的程序。如果是这种情况,有没有其他解决办法?
Process p = new ProcessBuilder()
.inheritIO()
.command("invoke-command", "-computername", "compName",
"-filepath", "C:\\script.ps1").start();
错误,
无法运行程序“invoke-command”:CreateProcess error=2,系统找不到指定的文件
附:该错误与提供的文件路径无关,而是与调用命令本身有关。
谢谢。
【问题讨论】:
invoke-command
不是 Windows 命令,而是 PowerShell 命令,因此您必须通过 PowerShell 命令行运行它,即 powershell.exe -Command your-command-here
。
【参考方案1】:
正如您所写,invoke-command
是一个 Powershell 命令,因此您必须调用 Powershell tu 运行命令,如下所示:
Process p = new ProcessBuilder()
.inheritIO()
.command("powershell", "invoke-command", "-computername", "compName",
"-filepath", "C:\\script.ps1").start();
【讨论】:
谢谢@dudel!我也刚刚想通了。愚蠢的我,错误信息非常清楚。将代码保留在这里,以防它可能对其他人有用。再次感谢。以上是关于通过 Java 远程运行 Powershell 脚本的主要内容,如果未能解决你的问题,请参考以下文章
Powershell远程在Azure A7虚拟机执行Java JVM失败
powershell 远程执行bat脚本,去启动一个应用,如何让应用一直运行,powershell能正常退出?