Skip to content

Connect to a Windows machine with WinRM, run remote commands and transfer files

License

Notifications You must be signed in to change notification settings

rsdoherty/winrmcp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

winrmcp

Build Status PyPI version

A Python library to execute remote commands on Windows (cmd.exe and PowerShell), and to transfer files.

This is a thin wrapper on top of excellent pywinrm.

For file transfer, we use the same method as in Go package winrmcp.

Installation

pip install winrmcp

Quick start

from winrmcp import Client

client = Client('my-windows-machine.com', auth=('CleverUser', 'cleverPassword'))

with client.shell() as shell:
    out, _ = shell.check_cmd(['ipconfig', '/all'])
    print(out)

    script = """$strComputer = $Host
    Clear
    $RAM = WmiObject Win32_ComputerSystem
    $MB = 1048576

    "Installed Memory: " + [int]($RAM.TotalPhysicalMemory /$MB) + " MB" """
    out, _ = shell.check_ps(script)
    print(out)

client.copy('/home/mike/temp/build.bat', '%TEMP%\\build.bat')
with client.shell() as shell:
    shell.check_call('cmd.exe', '/k', '%TEMP%\\build.bat)

API

Client

Client extends winrm.Session to provide Client.shell context-manager that opens remote shell.

See documentaiotn of pywinrm for the expected parameters.

Client.shell() - creates a new context-managed shell, returns intsance of Shell.

Client.copy(local_file, remote_file) - copies the content of local file local_file to the remote machine as remote_file. Note that local_file can be a file-like object, having read method returning bytes.

Shell

Shell represent the shell running on the remote Windows machine. You can get an instance of this class by calling shell() on a Client instance.

Shell.cmd(command, *args) - runs a command in remote CMD.EXE shell. Returns winrm.Response instance, see docs there.

Shell.ps(script) - runs a script in remote PowerShell shell. Returns winrm.Response instance, see docs there.

Shell.check_cmd(command, *args) - runs a command in remote CMD.EXE shell. Returns a tuple of stdout and stderr strings. If remote command return non-zero code, raises ShellCommandError exception.

Shell.check_ps(script) - runs a script in remote PowerShell shell. Returns a tuple of stdout and stderr strings. If remote command return non-zero code, raises ShellCommandError exception.

About

Connect to a Windows machine with WinRM, run remote commands and transfer files

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 96.3%
  • Makefile 3.7%