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之关于循环的小伎俩
Oct 02 Python
使用python实现rsa算法代码
Feb 17 Python
Python加载带有注释的Json文件实例
May 23 Python
python生成1行四列全2矩阵的方法
Aug 04 Python
Python I/O与进程的详细讲解
Mar 08 Python
PyQt5实现简易电子词典
Jun 25 Python
python运用sklearn实现KNN分类算法
Oct 16 Python
Python中实现输入超时及如何通过变量获取变量名
Jan 18 Python
Python获取对象属性的几种方式小结
Mar 12 Python
python 解决mysql where in 对列表(list,,array)问题
Jun 06 Python
python中有帮助函数吗
Jun 19 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
Sep 03 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中使用与Perl兼容的正则表达式
2006/11/26 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
codeigniter显示所有脚本执行时间的方法
2015/03/21 PHP
PHP $O00OO0=urldecode & eval 解密,记一次商业源码的去后门
2020/09/13 PHP
学习ExtJS table布局
2009/10/08 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
浅析jQuery的链式调用之each函数
2010/12/03 Javascript
Jquery 插件开发笔记整理
2011/01/17 Javascript
IE、FF、Chrome浏览器中的JS差异介绍
2013/08/13 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
JS实现iframe自适应高度的方法示例
2017/01/07 Javascript
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
2019/06/21 Javascript
NodeJs实现简易WEB上传下载服务器
2019/08/10 NodeJs
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python实现自动添加脚本头信息的示例代码
2016/09/02 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
Python多线程同步---文件读写控制方法
2019/02/12 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
在python中实现调用可执行文件.exe的3种方法
2019/07/07 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
CSS3教程(9):设置RGB颜色
2009/04/02 HTML / CSS
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
商务英语本科生的自我评价分享
2013/11/15 职场文书
八年级语文教学反思
2014/02/11 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
集结号观后感
2015/06/08 职场文书
解决go在函数退出后子协程的退出问题
2021/04/30 Golang
用Python实现一个打字速度测试工具来测试你的手速
2021/05/28 Python