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批量按比例缩小图片脚本分享
May 21 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
Mar 21 Python
python的格式化输出(format,%)实例详解
Jun 01 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
Dec 10 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
Dec 27 Python
python 插入日期数据到Oracle实例
Mar 02 Python
解决Jupyter因卸载重装导致的问题修复
Apr 10 Python
判断Threading.start新线程是否执行完毕的实例
May 02 Python
什么是Python中的匿名函数
Jun 02 Python
python多线程semaphore实现线程数控制的示例
Aug 10 Python
python 元组和列表的区别
Dec 30 Python
用sleep间隔进行python反爬虫的实例讲解
Nov 30 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 使用memcached简单示例分享
2015/03/05 PHP
PHP封装的数据库保存session功能类
2016/07/11 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
2019/06/03 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
javascript getElementsByClassName实现代码
2010/10/11 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
2012/04/07 Javascript
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
跟我学习javascript的prototype原型和原型链
2015/11/18 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
深入理解JavaScript创建对象的多种方式以及优缺点
2017/06/01 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
JS常用跨域方法实现原理解析
2020/12/09 Javascript
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
Python读写配置文件的方法
2015/06/03 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
用Python逐行分析文件方法
2019/01/28 Python
Python字符串内置函数功能与用法总结
2019/04/16 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
跟单文员岗位职责
2014/01/03 职场文书
教师演讲稿范文
2014/01/08 职场文书
前处理组长岗位职责
2014/03/01 职场文书
镇政府副镇长群众路线专题民主生活会对照检查材料
2014/09/19 职场文书
天坛导游词
2015/02/02 职场文书
教师师德工作总结2015
2015/07/22 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
六一儿童节致辞
2015/07/31 职场文书
如何书写授权委托书?
2019/06/25 职场文书
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python
详解MySQL集群搭建
2021/05/26 MySQL