叫我想写一个简单的应用程序需要在命令行arguement(这将是一个PowerShell PS1文件),然后运行它时,PowerShell进程挂。所以我已经用了许多不同的方法,并且似乎遇到了问题。如果我试图从Java中调用的PowerShell,Windows的过程开始,是通过进程管理器可见,但是PowerShell的永远不会返回,它挂在某种循环通过它的外观。我使用的命令是:从Java应用程序
Runtime systemRuntime = Runtime.getRuntime();
Process proc = systemRuntime.exec(command);
目前我硬编码位置PS1的文件,因为我试图排除这个可能性是:
String command = "powershell -noprofile -noninteractive \"&C:\\new\\tst.ps1\"";
命令,然后使用执行一个问题。使用进程管理器,我可以看到挂PowerShell进程,并传递给它的命令是:
powershell -noprofile -noninteractive "&C:\new\tst.ps1"
,当复制到一个cmd窗口,工作启动tst.ps1文件。文件本身就是在这个例子非常简单,我想我可以排除它被冻结的原因,因为我曾试图启动其他PS1的文件相同的行为就可以看出。
为了进一步增加混乱,如果我用上面贴的Java代码,并通过在PowerShell命令,而不是那么成功运行一个文件名。
我已经冲刷网页,看到很多人遇到同样的问题,但似乎没有人已经张贴有解决方案,我希望对我而言它是一个简单的监督,很容易固定。
任何提示/提示是赞赏:d
艾伦
感谢您的回复,我使用Process.getInputStream()调用。我已成立的那一刻,直到我得到这个java类的工作简直是调用mkdir命令,只是为了让我轻松地检查它跑了PS1文件,从它的输出只应该是标准的东西,PowerShell的splurts出来,如果你用它来创建一个文件夹。奇怪的是我看到输出很好,如果我从java调用powershell命令mkdir,但是当java直接调用ps1文件而不是命令它挂起?任何其他的想法都会很棒,因为我希望它有一些非常简单的东西,我忽略了! – Alan 2011-01-20 14:11:16