Metadata-Version: 2.1
Name: pywinos
Version: 1.0.9
Summary: The cross-platform tool to execute PowerShell and command line remotely and locally.
Home-page: https://github.com/c-pher/PyWinOS.git
Author: Andrey Komissarov
Author-email: a.komisssarov@gmail.com
License: MIT
Description: [![PyPI version](https://badge.fury.io/py/pywinos.svg)](https://badge.fury.io/py/pywinos)
        [![Build Status](https://travis-ci.org/c-pher/PyWinOS.svg?branch=master)](https://travis-ci.org/c-pher/PyWinOS)
        [![Coverage Status](https://coveralls.io/repos/github/c-pher/PyWinOS/badge.svg?branch=master)](https://coveralls.io/github/c-pher/PyWinOS?branch=master)
        
        # 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](https://docs.microsoft.com/en-us/windows/win32/winrm/portal?redirectedfrom=MSDN)
        It based on [pywinrm](https://pypi.org/project/pywinrm/).
        
        PyWinOS returns object with **exit code, stdout and sdtderr** response.
        
        ## Installation
        For most users, the recommended method to install is via pip:
        ```cmd
        pip install pywinos
        ```
        
        or from source:
        
        ```cmd
        python setup.py install
        ```
        
        ## Import
        ```python
        from pywinos import WinOSClient
        ```
        ---
        ## Usage (remote server)
        #### Run PowerShell:
        ```python
        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:
        ```python
        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:
        ```python
        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.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.
        
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.6
Description-Content-Type: text/markdown
