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的web框架编写MVC配置来使其运行的教程
Apr 30 Python
python实现基于SVM手写数字识别功能
May 27 Python
python中利用h5py模块读取h5文件中的主键方法
Jun 05 Python
python 读写文件,按行修改文件的方法
Jul 12 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
Oct 15 Python
python分批定量读取文件内容,输出到不同文件中的方法
Dec 08 Python
Python实现新型冠状病毒传播模型及预测代码实例
Feb 05 Python
python传到前端的数据,双引号被转义的问题
Apr 03 Python
python语言的优势是什么
Jun 17 Python
OpenCV图片漫画效果的实现示例
Aug 18 Python
通过实例解析python and和or使用方法
Nov 14 Python
7个关于Python的经典基础案例
Nov 07 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 反射机制实现动态代理的代码
2008/10/22 PHP
PHP 日,周,月点击排行统计
2012/01/11 PHP
深入PHP nl2br()格式化输出的详解
2013/06/05 PHP
php实例分享之二维数组排序
2014/05/15 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
javascript innerHTML使用分析
2010/12/03 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
js中style.display=""无效的解决方法
2014/10/30 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
javascript动态生成树形菜单的方法
2015/11/14 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
JavaScript中的各种操作符使用总结
2016/05/26 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
JavaScript实现简单动态进度条效果
2018/04/06 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
vue获取data数据改变前后的值方法
2019/11/07 Javascript
vue2.0 解决抽取公用js的问题
2020/07/31 Javascript
python使用psutil模块获取系统状态
2016/08/27 Python
Python subprocess库的使用详解
2018/10/26 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
matplotlib 对坐标的控制,加图例注释的操作
2020/04/17 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
Python魔术方法专题
2020/06/19 Python
html5 canvas 画图教程案例分析
2012/11/23 HTML / CSS
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
房产继承公证书
2014/04/09 职场文书
研发工程师岗位职责
2014/04/28 职场文书
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题
一文搞清楚MySQL count(*)、count(1)、count(col)区别
2022/03/03 MySQL