Update PowerShell command line processing to handle parameters passed via splatting.

This commit is contained in:
Chris Church 2014-11-23 22:53:10 -05:00
parent 116109468c
commit e9b6aaf5d8
5 changed files with 49 additions and 4 deletions

View file

@ -143,7 +143,7 @@ class Connection(object):
vvv("EXEC %s" % cmd, host=self.host)
# For script/raw support.
if cmd_parts and cmd_parts[0].lower().endswith('.ps1'):
script = powershell._build_file_cmd(cmd_parts)
script = powershell._build_file_cmd(cmd_parts, quote_args=False)
cmd_parts = powershell._encode_script(script, as_list=True)
try:
result = self._winrm_exec(cmd_parts[0], cmd_parts[1:], from_exec=True)

View file

@ -53,9 +53,11 @@ def _encode_script(script, as_list=False):
return cmd_parts
return ' '.join(cmd_parts)
def _build_file_cmd(cmd_parts):
def _build_file_cmd(cmd_parts, quote_args=True):
'''Build command line to run a file, given list of file name plus args.'''
return ' '.join(_common_args + ['-ExecutionPolicy', 'Unrestricted', '-File'] + ['"%s"' % x for x in cmd_parts])
if quote_args:
cmd_parts = ['"%s"' % x for x in cmd_parts]
return ' '.join(['&'] + cmd_parts)
class ShellModule(object):
@ -110,7 +112,7 @@ class ShellModule(object):
cmd_parts = shlex.split(cmd, posix=False)
if not cmd_parts[0].lower().endswith('.ps1'):
cmd_parts[0] = '%s.ps1' % cmd_parts[0]
script = _build_file_cmd(cmd_parts)
script = _build_file_cmd(cmd_parts, quote_args=False)
if rm_tmp:
rm_tmp = _escape(rm_tmp)
script = '%s; Remove-Item "%s" -Force -Recurse;' % (script, rm_tmp)