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中使用dom模块生成XML文件示例
Apr 05 Python
使用Python压缩和解压缩zip文件的教程
May 06 Python
Python中你应该知道的一些内置函数
Mar 31 Python
Python实现小数转化为百分数的格式化输出方法示例
Sep 20 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
Dec 03 Python
Python实现判断并移除列表指定位置元素的方法
Apr 13 Python
Linux 修改Python命令的方法示例
Dec 03 Python
pycharm设置鼠标悬停查看方法设置
Jul 29 Python
Python字符串格式化输出代码实例
Nov 22 Python
利用python爬取有道词典的方法
Dec 08 Python
python网络爬虫实现发送短信验证码的方法
Feb 25 Python
Python 如何将integer转化为罗马数(3999以内)
Jun 05 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 select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
Laravel 5框架学习之表单验证
2015/04/08 PHP
深入理解PHP中的Streams工具
2015/07/03 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
jquery 1.3.2 IE8中的一点点的小问题解决方法
2009/07/10 Javascript
JavaScript中的prototype使用说明
2010/04/13 Javascript
JavaScript快速检测浏览器对CSS3特性的支持情况
2012/09/26 Javascript
JavaScript之IE的fireEvent方法详细解析
2013/11/20 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
jQuery获取页面元素绝对与相对位置的方法
2015/06/10 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
浅析JavaScript中的对象类型Object
2016/05/26 Javascript
layui.js实现的表单验证功能示例
2017/11/15 Javascript
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
2019/04/17 Javascript
js模拟实现烟花特效
2020/03/10 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
常用python编程模板汇总
2016/02/12 Python
Windows下安装python MySQLdb遇到的问题及解决方法
2017/03/16 Python
python 实现一个贴吧图片爬虫的示例
2017/10/12 Python
Pycharm 创建 Django admin 用户名和密码的实例
2018/05/30 Python
Python实现的简单排列组合算法示例
2018/07/04 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
python画图的函数用法以及技巧
2019/06/28 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
2020/02/20 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
Python使用jupyter notebook查看ipynb文件过程解析
2020/06/02 Python
数学专业推荐信范文
2013/11/21 职场文书
2014学习全国两会精神心得体会2000字
2014/03/11 职场文书
护理专业毕业生自我鉴定总结
2014/03/24 职场文书
工程承包协议书范本
2014/09/29 职场文书
创业计划书之家政服务
2019/09/18 职场文书
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS