如何使用Java执行多行PowerShell脚本

时间:2017-06-23 13:38:45

标签: java powershell format runtime

我正在尝试使用Runtime从Java启动PowerShell脚本。以下是我的代码:

String command = ("powershell.exe Get-Process");
String line;

Process powerShellProcess = Runtime.getRuntime().exec(command);
powerShellProcess.getOutputStream().close();

BufferedReader stdout = new BufferedReader(new InputStreamReader(
            powerShellProcess.getInputStream()));

while ((line = stdout.readLine()) != null) {
    if(DEBUG) {
        System.out.println(line);
    }
}
stdout.close();

但是,我不需要“Get-Process”,而是需要执行以下操作(以下是一个片段,但它显示了我的观点)。我尝试在没有任何格式化的情况下将其复制到String中,但由于PowerShell代码中出现了许多引号,因此会抛出错误。

...
param (
[Parameter(Mandatory=$False,Position=1)]
[string]$Server,
[Parameter(Mandatory=$False,Position=2)]
[string]$Site,
[Parameter(Mandatory=$False,Position=3)]
[string]$Path,
...

我如何执行这个多行脚本,因为当我尝试用上面的代码替换“Get-Process”时,它会抛出一堆错误,但是当我通过CMD手动执行我的脚本时,它没问题。我尝试将其格式化如下,但无济于事:

   ...
    param (
    " +
    "    [Parameter(Mandatory=$False,Position=1)]\n" +
    "    [string]$Server,\n" +
    "    [Parameter(Mandatory=$False,Position=2)]\n" +
    "    [string]$Site,\n" +
    "    [Parameter(Mandatory=$False,Position=3)]\n" +
    "    [string]$Path,
    ...

这给了我错误:

At line:1 char:258
+ ... =$False,Position=4)] [string]$Filename ) $appVer = '1.3.1' if (!$Serv...
+ ~~ Unexpected token 'if' in expression or statement. At line:1 char:2517
+ ... eUrl = New-Object Microsoft.SharePoint.SPSite(http://$Server, $file.L

那么,任何人都可以帮助我使用Runtime从Java正确执行多行PowerShell脚本吗?

0 个答案:

没有答案