我正在尝试使用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脚本吗?