Pywinrm
Jump to navigation
Jump to search
Pywinrm
Install Latest Version in virtual environment
python3 -v venv .venv . .venv/bin/activate pip install pywinrm
.env
set -a RHOST="myhostorip" USERNAME="myuser@example.com" USERPASS="mysecretpass"
source nv
. .env
Code
example.py
#!/usr/bin/env python3 import winrm import os USERNAME = os.environ["USERNAME"] USERPASS = os.environ["USERPASS"] RHOST = os.environ["RHOST"] s = winrm.Session(RHOST, auth=(USERNAME, USERPASS), transport='ntlm') # transport='ssl' ps_script=""" $mstring = (hostname) $certs = (ls Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*$mstring*" }) echo "$certs" """ # r = s.run_cmd('ipconfig', ['/all']) r = s.run_ps(ps_script) if r.status_code == 0: print(r.std_out.decode()) else: print(r.std_err.decode())
chmod +x example.py ./example.py
More
<br />import winrm from decouple import config # pulls from .env file USERNAME = config('USERNAME') USERPASS = config('USERPASS') HOST = config('HOST') s = winrm.Session(HOST, auth=(USERNAME, USERPASS), transport='ntlm') r = s.run_cmd('ipconfig', ['/all']) if r.status_code == 0: print(r.std_out.decode()) else: print(r.std_err.decode())
low-level without wrapper
from winrm.protocol import Protocol p = Protocol( endpoint='https://windows-host:5986/wsman', transport='ntlm', username=r'somedomain\someuser', password='secret', server_cert_validation='ignore') shell_id = p.open_shell() command_id = p.run_command(shell_id, 'ipconfig', ['/all']) std_out, std_err, status_code = p.get_command_output(shell_id, command_id) p.cleanup_command(shell_id, command_id) p.close_shell(shell_id)