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 相关文章推荐
Pyhton中防止SQL注入的方法
Feb 05 Python
Python 的类、继承和多态详解
Jul 16 Python
Python排序搜索基本算法之插入排序实例分析
Dec 11 Python
Java及python正则表达式详解
Dec 27 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
Feb 13 Python
PyCharm在新窗口打开项目的方法
Jan 17 Python
Python二叉树的镜像转换实现方法示例
Mar 06 Python
使用Python+selenium实现第一个自动化测试脚本
Mar 17 Python
python实现批处理文件
Jul 28 Python
使用jupyter notebook运行python和R的步骤
Aug 13 Python
python中pickle模块浅析
Dec 29 Python
python如何利用cv2.rectangle()绘制矩形框
Dec 24 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验证码(支持中文)
2007/02/14 PHP
解析php curl_setopt 函数的相关应用及介绍
2013/06/17 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
PHP序列化操作方法分析
2016/09/28 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
2017/08/01 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
2021/02/26 PHP
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
js中格式化日期时间型数据函数代码
2010/11/08 Javascript
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
JavaScript学习笔记之数组去重
2016/03/23 Javascript
JavaScript代码性能优化总结篇
2016/05/15 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
Element-UI中Upload上传文件前端缓存处理示例
2019/02/21 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
Python入门_浅谈数据结构的4种基本类型
2017/05/16 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
2019/06/27 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
2019/08/24 Python
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
中东最大的在线宠物店:Dubai Pet Food
2020/06/11 全球购物
竞选班长自荐书范文
2014/03/09 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
中学生旷课检讨书2篇
2014/10/09 职场文书
检讨书范文1000字
2015/01/28 职场文书
python基础之while循环语句的使用
2021/04/20 Python
Django项目如何正确配置日志(logging)
2021/04/29 Python
浅谈JS的二进制家族
2021/05/09 Javascript
教你用python控制安卓手机
2021/05/13 Python
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS
Win11电源已接通但未充电怎么办?Win11电源已接通未充电的解决方法
2022/04/05 数码科技