Skip to main content

The cross-platform tool to execute PowerShell and command line remotely and locally.

Project description

PyPI version Build Status Coverage Status

PyWinOS

The cross-platform tool to work with remote and local Windows OS.

PyWinOS uses the Windows Remote Manager (WinRM) service. It can establish connection to a remote server based on Windows OS and execute commands:

  • PowerShell
  • Command line
  • WMI.

It can execute commands locally using subprocess and command-line too.

For more information on WinRM, please visit Microsoft’s WinRM site It based on pywinrm.

PyWinOS returns object with exit code, stdout and sdtderr response.

Installation

For most users, the recommended method to install is via pip:

pip install pywinos

or from source:

python setup.py install

Import

from pywinos import WinOSClient

Usage (remote server)

Run PowerShell:

from pywinos import WinOSClient

tool = WinOSClient(host='172.16.0.126', username='administrator', password='rds123RDS', logger_enabled=True)
response = tool.run_ps(command='$PSVersionTable.PSVersion')

print(response)  
# ResponseParser(response=(0, 'Major  Minor  Build  Revision\r\n-----  -----  -----  --------\r\n5      1      17763  592', None, '$PSVersionTable.PSVersion'))
print(response.exited)  # 0
print(response.stdout)
# Major  Minor  Build  Revision
# -----  -----  -----  --------
# 5      1      17763  592

# stderr in PowerShell contains some text by default    
print(response.stderr)  # <Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04"><Ob...
print(response.ok)  # True

Run command line:

from pywinos import WinOSClient

tool = WinOSClient('172.16.0.126', 'administrator', 'P@ssw0rd', logger_enabled=False)
response = tool.run_cmd(command='whoami')

print(response)  # <Response code 0, out "b'\r\nMajor  Minor  Buil'", err "b''">
print(response.exited)  # 0
print(response.stdout)  # test-vm1\administrator
print(response.stderr)  # None
print(response.ok)  # True

Usage (local server)

Run command line:

from pywinos import WinOSClient

tool = WinOSClient(logger_enabled=False)
# tool = WinOSClient(host='', logger_enabled=False)
# tool = WinOSClient(host='localhost', logger_enabled=False)
# tool = WinOSClient(host='127.0.0.1', logger_enabled=False)
response = tool.run_cmd(command='whoami')

print(response)  # (0, b'mypc\\bobby\r\n', b'')
print(response.exited)  # 0
print(response.stdout)  # my_pc\bobby
print(response.stderr)  # None
print(response.ok)  # True

Helpful predefined methods to work with local Windows OS

  • list_all_methods
  • is_host_available
  • get_current_os_name
  • get_hostname_ip
  • search
  • get_absolute_path
  • get_md5
  • copy
  • unzip
  • remove
  • exists (can check file existing on remote attached network share too)
  • list_dir
  • create_directory
  • clean_directory
  • sort_files (list directory and returns sorted files)
  • timestamp
  • ping
  • get_file_size
  • get_file_version
  • get_last_file_name
  • replace_text (replace text in file)
  • get_local_hostname_ip
  • get_process
  • kill_process
  • get_service
  • is_process_running
  • get_process_memory_info
  • get_process_memory_percent
  • get_process_cpu_percent
  • debug_info (service method to get useful env info)
  • ...

NOTE

Main methods (run_ps and run_cmd) are OS independent. But there are some methods works only on Windows. e.g. get_file_version() depends on pywin32 that available on Windows only.


Changelog

1.0.4a (8.01.2020)
  • added attach_share()
1.0.4 (8.01.2020)
  • get_process() method added. Returns 'psutil.Process' class
  • is_process_running() refactored.
  • get_process_memory_info() method added: returns namedtuple. Full - optional parameter that work with admin rights only. Else returns brief memory info!
  • get_process_memory_percent() method added.
  • get_process_cpu_percent() method added.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pywinos, version 1.0.4.post0
Filename, size File type Python version Upload date Hashes
Filename, size pywinos-1.0.4.post0-py3-none-any.whl (10.7 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size pywinos-1.0.4.post0.tar.gz (11.6 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page