diff --git a/src/main/java/com/github/frimtec/libraries/jpse/AbstractPowerShellExecutor.java b/src/main/java/com/github/frimtec/libraries/jpse/AbstractPowerShellExecutor.java index 9b4b815..e11d5e0 100644 --- a/src/main/java/com/github/frimtec/libraries/jpse/AbstractPowerShellExecutor.java +++ b/src/main/java/com/github/frimtec/libraries/jpse/AbstractPowerShellExecutor.java @@ -18,12 +18,14 @@ abstract class AbstractPowerShellExecutor implements PowerShellExecutor { private static final int INITIAL_STREAM_BUFFER_SIZE = 1000; private static final String JPSE_GLOBBER_THREAD_NAME = "JPSE-Gobbler"; - private final String executionCommand; private final Path tempPath; + private final String executionCommand; + private final String paramQuote; - AbstractPowerShellExecutor(Path tempPath, String executionCommand) { + AbstractPowerShellExecutor(Path tempPath, String executionCommand, String paramQuote) { this.tempPath = tempPath; this.executionCommand = executionCommand; + this.paramQuote = paramQuote; if (tempPath != null && !Files.exists(tempPath)) { try { Files.createDirectories(tempPath); @@ -44,7 +46,7 @@ public ExecutionResult execute(Path script, Map arguments) { List commandLine = new ArrayList<>(Arrays.asList(this.executionCommand, "-File", script.toString())); commandLine.addAll(arguments.entrySet() .stream() - .flatMap(entry -> Stream.of("-" + entry.getKey(), "\"" + entry.getValue() + "\"")) + .flatMap(entry -> Stream.of("-" + entry.getKey(), this.paramQuote + entry.getValue() + this.paramQuote)) .collect(Collectors.toList())); return execute(createProcessBuilder(commandLine)); } diff --git a/src/main/java/com/github/frimtec/libraries/jpse/LinuxPowerShellExecutor.java b/src/main/java/com/github/frimtec/libraries/jpse/LinuxPowerShellExecutor.java index d52ddb0..1f70ab5 100644 --- a/src/main/java/com/github/frimtec/libraries/jpse/LinuxPowerShellExecutor.java +++ b/src/main/java/com/github/frimtec/libraries/jpse/LinuxPowerShellExecutor.java @@ -5,8 +5,9 @@ class LinuxPowerShellExecutor extends AbstractPowerShellExecutor { private static final String POWER_SHELL_CMD = "pwsh"; + private static final String PARAM_QUOTE = ""; LinuxPowerShellExecutor(Path tempPath) { - super(tempPath, POWER_SHELL_CMD); + super(tempPath, POWER_SHELL_CMD, PARAM_QUOTE); } } diff --git a/src/main/java/com/github/frimtec/libraries/jpse/WindowsPowerShellExecutor.java b/src/main/java/com/github/frimtec/libraries/jpse/WindowsPowerShellExecutor.java index d0ce9b5..34e5499 100644 --- a/src/main/java/com/github/frimtec/libraries/jpse/WindowsPowerShellExecutor.java +++ b/src/main/java/com/github/frimtec/libraries/jpse/WindowsPowerShellExecutor.java @@ -5,13 +5,14 @@ class WindowsPowerShellExecutor extends AbstractPowerShellExecutor { private static final String POWER_SHELL_CMD = "powershell.exe"; + private static final String PARAM_QUOTE = "\""; WindowsPowerShellExecutor(Path tempPath) { - super(tempPath, POWER_SHELL_CMD); + super(tempPath, POWER_SHELL_CMD, PARAM_QUOTE); } WindowsPowerShellExecutor(Path tempPath, String executionCommand) { - super(tempPath, executionCommand); + super(tempPath, executionCommand, PARAM_QUOTE); } } diff --git a/src/test/java/com/github/frimtec/libraries/jpse/AbstractPowerShellExecutorTest.java b/src/test/java/com/github/frimtec/libraries/jpse/AbstractPowerShellExecutorTest.java index e0185a4..186a75e 100644 --- a/src/test/java/com/github/frimtec/libraries/jpse/AbstractPowerShellExecutorTest.java +++ b/src/test/java/com/github/frimtec/libraries/jpse/AbstractPowerShellExecutorTest.java @@ -86,14 +86,14 @@ void testExecuteForScriptFromFile() { @Test void testExecuteForScriptFromClasspath() { // arrange - Map arguments = Collections.singletonMap("name", "PowerShell"); + Map arguments = Collections.singletonMap("name", "Power - 'Shell'"); // act ExecutionResult executionResult = this.executor.execute(AbstractPowerShellExecutorTest.class.getResourceAsStream("/test.ps1"), arguments); // assert assertThat(executionResult.isSuccess()).isTrue(); - assertThat(executionResult.getStandardOutput()).isEqualTo("Hello PowerShell!"); + assertThat(executionResult.getStandardOutput()).isEqualTo("Hello Power - 'Shell'!"); } @Test