我需要使用PowerShell Command
程序执行Java
。有人可以指导我怎么做吗?
我的命令是Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Format-Table –AutoSize
答案 0 :(得分:20)
你应该编写一个这样的java程序,这里有一个基于Nirman技术博客的示例,基本思想是执行调用PowerShell进程的命令,如下所示:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class PowerShellCommand {
public static void main(String[] args) throws IOException {
//String command = "powershell.exe your command";
//Getting the version
String command = "powershell.exe $PSVersionTable.PSVersion";
// Executing the command
Process powerShellProcess = Runtime.getRuntime().exec(command);
// Getting the results
powerShellProcess.getOutputStream().close();
String line;
System.out.println("Standard Output:");
BufferedReader stdout = new BufferedReader(new InputStreamReader(
powerShellProcess.getInputStream()));
while ((line = stdout.readLine()) != null) {
System.out.println(line);
}
stdout.close();
System.out.println("Standard Error:");
BufferedReader stderr = new BufferedReader(new InputStreamReader(
powerShellProcess.getErrorStream()));
while ((line = stderr.readLine()) != null) {
System.out.println(line);
}
stderr.close();
System.out.println("Done");
}
}
为了执行powershell脚本
String command = "powershell.exe \"C:\\Pathtofile\\script.ps\" ";
答案 1 :(得分:14)
无需重新发明轮子。现在您可以使用jPowerShell
foreach($group in $grouped)
{
"Processing images with id $($group.Name)"
foreach($image in $group.Group)
{
"Processing $($image.Name)"
}
}
答案 2 :(得分:3)
您可以尝试使用以下命令调用powershell.exe:
String[] commandList = {"powershell.exe", "-Command", "dir"};
ProcessBuilder pb = new ProcessBuilder(commandList);
Process p = pb.start();
答案 3 :(得分:-1)
您可以在命令中使用-ExecutionPolicy RemoteSigned。
String cmd =“ cmd / c powershell -ExecutionPolicy RemoteSigned -noprofile -noninteractive C:\ Users \ File.ps1