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 应用中使用 MongoDB的方法
Jan 05 Python
Python字典实现简单的三级菜单(实例讲解)
Jul 31 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
Nov 30 Python
python绘制散点图并标记序号的方法
Dec 11 Python
python 计算积分图和haar特征的实例代码
Nov 20 Python
浅析python,PyCharm,Anaconda三者之间的关系
Nov 27 Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 Python
python有几个版本
Jun 17 Python
python读取xml文件方法解析
Aug 04 Python
Python pip 常用命令汇总
Oct 19 Python
python学习之panda数据分析核心支持库
May 07 Python
使用Python的开发框架Brownie部署以太坊智能合约
May 28 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利用scws实现mysql全文搜索功能的方法
2014/12/25 PHP
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
jQuery获得内容和属性示例代码
2014/01/16 Javascript
jQuery EasyUI datagrid实现本地分页的方法
2015/02/13 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
javascript回到顶部特效
2016/07/30 Javascript
js从外部获取图片的实现方法
2016/08/05 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
详解js静态资源文件请求的处理
2017/08/01 Javascript
VueJs 搭建Axios接口请求工具
2017/11/20 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
python字符串替换的2种方法
2014/11/30 Python
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
pandas DataFrame运算的实现
2020/06/14 Python
python递归函数用法详解
2020/10/26 Python
用CSS3打造HTML5的Logo(实现代码)
2016/06/16 HTML / CSS
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
如何将整数int转换成字串String
2014/03/21 面试题
什么是serialVersionUID
2016/03/04 面试题
行政工作个人的自我评价
2014/02/13 职场文书
商务英语广告词大全
2014/03/18 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
北京奥运会口号
2014/06/21 职场文书
学雷锋活动倡议书
2014/08/30 职场文书
董事长助理岗位职责
2015/02/11 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书
浅析InnoDB索引结构
2021/04/05 MySQL
Vue组件化(ref,props, mixin,.插件)详解
2022/05/15 Vue.js
Go语言编译原理之源码调试
2022/08/05 Golang