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实现端口转发器的方法
Mar 13 Python
举例讲解Django中数据模型访问外键值的方法
Jul 21 Python
python Matplotlib画图之调整字体大小的示例
Nov 20 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
Jan 24 Python
Windows 7下Python Web环境搭建图文教程
Mar 20 Python
Python增强赋值和共享引用注意事项小结
May 28 Python
python tkinter实现彩球碰撞屏保
Jul 30 Python
python网络爬虫 Scrapy中selenium用法详解
Sep 28 Python
解决pycharm不能自动补全第三方库的函数和属性问题
Mar 12 Python
keras slice layer 层实现方式
Jun 11 Python
为什么说python适合写爬虫
Jun 11 Python
Python OpenCV超详细讲解基本功能
Apr 02 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实现的微信红包算法分析(非官方)
2015/09/25 PHP
PHP内置加密函数详解
2016/11/20 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
2013/05/30 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
JavaScript中的立即执行函数表达式介绍
2015/03/15 Javascript
Angular的模块化(代码分享)
2016/12/26 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
基于Vue中使用节流Lodash throttle详解
2019/10/30 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
[46:10]2014 DOTA2国际邀请赛中国区预选赛 CnB VS HGT
2014/05/21 DOTA
django之常用命令详解
2016/06/30 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
老生常谈python中的重载
2018/11/11 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
css3media响应式布局实例
2016/07/08 HTML / CSS
linux面试题参考答案(7)
2012/10/29 面试题
应届毕业生通用的自荐书范文
2014/02/07 职场文书
公立医院改革实施方案
2014/03/14 职场文书
学校清洁工岗位职责
2015/04/15 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
消防安全月活动总结
2015/05/08 职场文书
党支部评议意见
2015/06/02 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP
MySQL图形化管理工具Navicat安装步骤
2021/12/04 MySQL
python中的random模块和相关函数详解
2022/04/22 Python