Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java应用程序中启动powershellscript_Java_Powershell - Fatal编程技术网

在java应用程序中启动powershellscript

在java应用程序中启动powershellscript,java,powershell,Java,Powershell,通过使用-file参数启动powershell进程,是否可以在java应用程序中运行整个大型powershell脚本,而无需外部调用它?由于命令行长度限制,通过encodedcommand参数传递它也不起作用 也就是说,是否有一个java库可以让您将powershellscript粘贴到java应用程序中并运行它 我目前将powershellscript嵌入java应用程序并将其写入磁盘,但我正在寻找一种无文件的方法。由于您希望传递一个大型程序,从java程序到PS脚本的管道比使用命令行或环境变

通过使用-file参数启动powershell进程,是否可以在java应用程序中运行整个大型powershell脚本,而无需外部调用它?由于命令行长度限制,通过encodedcommand参数传递它也不起作用

也就是说,是否有一个java库可以让您将powershellscript粘贴到java应用程序中并运行它


我目前将powershellscript嵌入java应用程序并将其写入磁盘,但我正在寻找一种无文件的方法。

由于您希望传递一个大型程序,从java程序到PS脚本的管道比使用命令行或环境变量更合适。因为我不太懂Java,也没有安装它,所以我将在下面的代码段中从PS命令行模拟它。Java程序将从列表或其他合适的数据结构中读取程序的行,而本例从文件系统中读取。我确实在google上看到了从Java到外部执行命令的管道

cat my.ps1|
    powershell -command {$scr="";foreach ($line in $input){$scr+=$line+"`n"} echo bxb $s cxc}
PS存根收到程序而不是回显程序后,它将执行它:iex$scr


如果您需要将参数从Java传递到PS,您可以将它们作为设置全局变量的代码行与程序一起传递,或者它们可以是存根代码中设置的全局变量。其他更复杂的变体也是可能的。

我真的不认为在一个exec上发送多个命令可以在JAVA中工作。在这种情况下,您必须使用换行符和分号分隔每一行,可能您可以使用powershell命令{echo yo;$a=get date;$a | gm;$a.date}尝试使用小脚本2-3行。请记住,我认为命令行的最大长度是1024。您可以通过环境变量传递额外的powershell代码,您的脚本可以动态执行iex$env:pscode。我注意到你说的是大的。另一种方法是通过命令行执行少量PS代码,然后将大部分代码从Java管道传输到PS。同样,您可以动态执行管道代码。