The cross-platform tool to execute PowerShell and command line remotely and locally.
Project description
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.1.4.post0 (18.05.2021)
- fixed: run_ps and run_cmd returns ResponseParser object now
1.1.4 (17.05.2021)
remove and clean_directory extended with param "ignore_errors=False"
1.1.3 (-------)
- get_service_status added
- logger updated to log destination host
1.1.2 (17.12.2020)
- get_service_file_version
- is_process_running
1.1.1 (19.11.2020)
- get_service
- start_service
- restart_service
- stop_service
- get_process
- wait_service_start
- is_process_running
Removed:
- get_process_memory_info
- get_process_memory_percent
- get_process_cpu_percent
1.1.0 (16.11.2020)
new methods added
- .get_content()
- .get_json()
1.0.9 (16.11.2020)
- .get_service_file_version() method added
1.0.8 (7.10.2020)
- added local powershell usage
- local run_ps can execute scripts and accept named arguments
1.0.7 (14.04.2020)
- .decoded() method added to the response parser
- warning added if run_ps invoked locally
1.0.6 (06.03.2020)
- .json() method added to the response parser
1.0.5 (26.01.2020)
- removed pywin32
1.0.5a (26.01.2020)
- logging refactored to avoid multiple log entries
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pywinos-1.1.4.post0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0603b2994287a20c79ce69a1260ce59c8fa03ebfcc60e19bdb69f01abad178a6 |
|
MD5 | 00de66b43d38be6a76e8cac229eac247 |
|
BLAKE2b-256 | 61cc639da156e81781fbf85218ae3891ee2a7a53619df05c926ac1e6010e74a8 |