Advertisement
surik00

PS comm

Jun 28th, 2018
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.80 KB | None | 0 0
  1. import logging
  2. import subprocess
  3.  
  4.  
  5. PS_PATH = 'C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe'
  6.  
  7.  
  8. def demo_ps_comm_that_works():
  9.     pipe = subprocess.Popen(
  10.         [PS_PATH, 'Write-Host "Hello World!";'],
  11.         stdout=subprocess.PIPE, stderr=subprocess.PIPE
  12.     )
  13.  
  14.     stdout_data, stderr_data = pipe.communicate()
  15.     rc = pipe.returncode
  16.     if rc != 0:
  17.         logging.warning(f'Unexpected return code!: {rc}')
  18.     if stderr_data:
  19.         logging.error(f'Error is {stderr_data}')
  20.  
  21.     try:
  22.         result = stdout_data.decode('cp866')
  23.     except Exception as e:
  24.         logging.critical(f'Couldn\'t decode message!:\n{stdout_data}')
  25.     else:
  26.         return result.strip().split('\n')
  27.  
  28.  
  29. def demo_ps_comm_that_doesnt_work():
  30.     pipe = subprocess.Popen(
  31.         [
  32.             PS_PATH,
  33.             'Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010;',
  34.             'Write-Host "Hello!";',
  35.         ],
  36.         stdout=subprocess.PIPE, stderr=subprocess.PIPE
  37.     )
  38.  
  39.     stdout_data, stderr_data = pipe.communicate()
  40.     rc = pipe.returncode
  41.     if rc != 0:
  42.         logging.warning(f'Unexpected return code!: {rc}')
  43.     if stderr_data:
  44.         logging.error(f'Error is {stderr_data}')
  45.  
  46.     try:
  47.         result = stdout_data.decode('cp866')
  48.     except Exception as e:
  49.         logging.critical(f'Couldn\'t decode message!:\n{stdout_data}')
  50.     else:
  51.         return result.strip().split('\n')
  52.  
  53.  
  54. ####
  55. # Doesnt work too
  56. PS_GET_MAILBOXES_CMD = '''Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
  57. Get-Mailbox -DomainController "{DC}" | ForEach-Object {{
  58.    Write-Host ($_.Name, $_.ForwardingAddress, $_.DeliverToMailboxAndForward, $_.PrimarySmtpAddress) -Separator "{sep}"
  59. }}
  60. '''
  61. ###
  62.  
  63. print(demo_ps_comm_that_works())
  64. print(demo_ps_comm_that_doesnt_work())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement