Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法


Posted in Python onJuly 21, 2020

WinRM 即 Windows Remote Management,是微软对于WS-Management 远程管理协议的实现。

一、受控端配置 WinRM 服务

方式一:cmd 命令行(管理员)

  • 启用 WinRM 远程服务: winrm quickconfig
  • 查看 WinRM 服务监听状态: winrm e winrm/config/listener
C:\Windows\system32>winrm e winrm/config/listener
Listener [Source="GPO"]
 Address = *
 Transport = HTTP
 Port = 5985
 Hostname
 Enabled = true
 URLPrefix = wsman
 CertificateThumbprint
 ListeningOn = 127.0.0.1, 169.254.52.7, xx.xx.xx.xx, ::1, fe80::3989:dd91:e6b3:6f41%15, fe80::fd01:a9fd:c410:3407%12

允许使用 Basic 认证方式: winrm set winrm/config/service/auth @{Basic="true"}

winrm set winrm/config/service/auth @{Basic="true"}
Auth
 Basic = true [Source="GPO"]
 Kerberos = true
 Negotiate = true
 Certificate = false
 CredSSP = false
 CbtHardeningLevel = Relaxed

允许 WinRM 使用非加密的连接: winrm set winrm/config/service @{AllowUnencrypted="true"}

方式二:bat 脚本

call winrm quickconfig -quiet
call winrm set winrm/config/service/auth @{Basic="true"}
call winrm set winrm/config/service @{AllowUnencrypted="true"}

方式三:组策略

定位到 计算机配置 -> 策略 -> 管理模板 -> Windows 组件 -> Windows 远程管理(WinRM) -> WinRM 服务

启用 允许通过 WinRM 进行远程服务器管理允许基本身份验证允许未加密通信

Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法

建议同时启用服务与防火墙策略:

计算机配置-> 策略 -> Windows 设置 -> 安全设置 -> 系统服务 -> Windows Remote Management (WS-Management) ,启动模式为自动。

计算机配置-> 策略 -> Windows 设置 -> 安全设置 -> 高级安全 Windows 防火墙 -> 高级安全 Windows 防火墙 - XXX -> 入站规则 ,开放 5985(HTTP)和 5986(HTTPS)端口。

二、Python 使用 pywinrm 连接 WinRM 服务

安装 pywinrm 库: pip install pywinrm

执行 cmd 命令:

>>> import winrm
>>> session = winrm.Session('xx.xx.xx.xx', auth=('Administrator', 'admin_password'))
>>> cmd = session.run_cmd('ipconfig')
>>> cmd.std_out
b'\r\nWindows IP Configuration\r\n\r\n\r\nEthernet adapter \xd2\xd4\xcc\xab\xcd\xf8:\r\n\r\n Connection-specific DNS Suffix . : example.com\r\n Link-local IPv6 Address . . . . . : fe80::3989:dd91:e6b3:6f41%15\r\n IPv4 Address. . . . . . . . . . . : xx.xx.xx.xx\r\n Subnet Mask . . . . . . . . . . . : 255.255.255.0\r\n Default Gateway . . . . . . . . . : 172.20.23.254\r\n\r\nEthernet adapter \xd2\xd4\xcc\xab\xcd\xf8 2:\r\n\r\n Media State . . . . . . . . . . . : Media disconnected\r\n Connection-specific DNS Suffix . : \r\n'

执行 Powershell 命令:

>>> import winrm
>>> session = winrm.Session('xx.xx.xx.xx', auth=('Administrator', 'admin_password'))
>>> ps = session.run_ps('Get-Disk')
>>> ps.std_out
b'\r\nNumber Friendly Name Serial Number     HealthStatus   OperationalStatus  Total Size Partition \r\n                            Style  \r\n------ ------------- -------------     ------------   -----------------  ---------- ----------\r\n0  ST500DM002...    Z3TFS1S3    Healthy    Online     465.76 GB MBR  \r\n\r\n\r\n'

到此这篇关于Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法的文章就介绍到这了,更多相关Python Tricks远程控制 Windows 主机内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
详解Python开发中如何使用Hook技巧
Nov 01 Python
Python基于列表list实现的CRUD操作功能示例
Jan 05 Python
python3+mysql查询数据并通过邮件群发excel附件
Feb 24 Python
python中使用iterrows()对dataframe进行遍历的实例
Jun 09 Python
python爬虫之验证码篇3-滑动验证码识别技术
Apr 11 Python
对pyqt5多线程正确的开启姿势详解
Jun 14 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
python base64库给用户名或密码加密的流程
Jan 02 Python
python3正则模块re的使用方法详解
Feb 11 Python
python如何实现DES加密
Sep 21 Python
关于django python manage.py startapp 应用名出错异常原因解析
Dec 15 Python
Python之基础函数案例详解
Aug 30 Python
Python json格式化打印实现过程解析
Jul 21 #Python
基于python实现删除指定文件类型
Jul 21 #Python
python打开音乐文件的实例方法
Jul 21 #Python
Python读取yaml文件的详细教程
Jul 21 #Python
Python中bisect的用法及示例详解
Jul 20 #Python
python为什么要安装到c盘
Jul 20 #Python
python如何代码集体右移
Jul 20 #Python
You might like
PHP动态图像的创建
2006/10/09 PHP
php 猴子摘桃的算法
2017/06/20 PHP
php求斐波那契数的两种实现方式【递归与递推】
2019/09/09 PHP
jquery ajax执行后台方法
2010/03/18 Javascript
jquery 笔记 事件
2011/11/02 Javascript
javascript学习笔记(十九) 节点的操作实现代码
2012/06/20 Javascript
javascript中this做事件参数相关问题解答
2013/03/17 Javascript
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
关于query Javascript CSS Selector engine
2013/04/12 Javascript
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
javascript获取web应用根目录的方法
2014/02/12 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
总结JavaScript中布尔操作符||与&&的使用技巧
2015/11/17 Javascript
Bootstrap网格系统详解
2016/04/26 Javascript
javascript 中select框触发事件过程的分析
2017/08/01 Javascript
javascript函数的节流[throttle]与防抖[debounce]
2017/11/15 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
Python学习笔记之os模块使用总结
2014/11/03 Python
Python:slice与indices的用法
2019/11/25 Python
python中如何使用insert函数
2020/01/09 Python
社区十八大感言
2014/01/19 职场文书
新年寄语大全
2014/04/12 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
2015年学校教务处工作总结
2015/05/11 职场文书
图书馆义工感想
2015/08/07 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python
python flask开发的简单基金查询工具
2021/06/02 Python
Java实现多线程聊天室
2021/06/26 Java/Android
试了下Golang实现try catch的方法
2021/07/01 Golang