diff --git a/package/cloudshell/cm/customscript/domain/windows_script_executor.py b/package/cloudshell/cm/customscript/domain/windows_script_executor.py index 4fdc829..5e16abc 100644 --- a/package/cloudshell/cm/customscript/domain/windows_script_executor.py +++ b/package/cloudshell/cm/customscript/domain/windows_script_executor.py @@ -114,11 +114,11 @@ def copy_script(self, tmp_folder, script_file): for bulk in bulks: encoded_bulk = base64.b64encode(bulk.encode("utf-8")) code = """ -$path = Join-Path "%s" "%s" -$data = [System.Convert]::FromBase64String("%s") +$path = Join-Path "{0}" "{1}" +$data = [System.Convert]::FromBase64String("{2}") Add-Content -value $data -encoding byte -path $path -""" - result = self._run_cancelable(code, tmp_folder, script_file.name, encoded_bulk) +""".format(tmp_folder, script_file.name, encoded_bulk) + result = self._run_cancelable(code) if result.status_code != 0: raise Exception(ErrorMsg.COPY_SCRIPT % result.std_err) @@ -134,10 +134,10 @@ def run_script(self, tmp_folder, script_file, env_vars, output_writer, print_out for key, value in (env_vars or {}).iteritems(): code += '\n$env:%s = "%s"' % (key, str(value)) code += """ -$path = Join-Path "%s" "%s" +$path = Join-Path "{0}" "{1}" Invoke-Expression "& '$path'" -""" - result = self._run_cancelable(code, tmp_folder, script_file.name) +""".format(tmp_folder, script_file.name) + result = self._run_cancelable(code) if print_output: output_writer.write(result.std_out) output_writer.write(result.std_err) @@ -163,8 +163,10 @@ def delete_temp_folder(self, tmp_folder): # self.logger.debug('Stderr:' + result.std_err) # return result - def _run_cancelable(self, txt, *args): - ps_code = txt % args + def _run_cancelable(self, ps_code): + """ + :type ps_code: str + """ self.logger.debug('PowerShellScript:' + ps_code) bat_code = 'powershell -encodedcommand %s' % base64.b64encode(ps_code.encode('utf_16_le')).decode('ascii') diff --git a/package/tests/test_windows_script_executor.py b/package/tests/test_windows_script_executor.py index 058846b..7ca0529 100644 --- a/package/tests/test_windows_script_executor.py +++ b/package/tests/test_windows_script_executor.py @@ -74,6 +74,12 @@ def test_copy_script_fail(self): # Run script + def test_get_expected_file_extensions(self): + executor = WindowsScriptExecutor(self.logger, self.host, self.cancel_sampler) + file_extensions = executor.get_expected_file_extensions() + self.assertTrue(len(file_extensions)==1) + self.assertTrue('.ps1' in file_extensions) + def test_run_script_success(self): executor = WindowsScriptExecutor(self.logger, self.host, self.cancel_sampler) output_writer = Mock()