通过 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 远程 TFS 签入

Powershell远程在Azure A7虚拟机执行Java JVM失败

运行远程批处理文件时,Powershell 进程“挂起”

powershell 远程执行bat脚本,去启动一个应用,如何让应用一直运行,powershell能正常退出?

如何通过 Powershell 和 PSSessionConfiguration 远程连接到 Exchange 服务器

如何通过cmd杀死powershell进程?统一远程应用