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 相关文章推荐
使用C语言扩展Python程序的简单入门指引
Apr 14 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
Jun 21 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
Aug 30 Python
对python中return和print的一些理解
Aug 18 Python
python模块之paramiko实例代码
Jan 31 Python
django启动uwsgi报错的解决方法
Apr 08 Python
python write无法写入文件的解决方法
Jan 23 Python
Django 自定义权限管理系统详解(通过中间件认证)
Mar 11 Python
Django如何使用jwt获取用户信息
Apr 21 Python
Python基于os.environ从windows获取环境变量
Jun 09 Python
Python模块zipfile原理及使用方法详解
Aug 04 Python
详解如何使用Pytest进行自动化测试
Jan 14 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正则的Unknown Modifier错误解决方法
2010/03/02 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
两款万能的php分页类
2015/11/12 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
PHP token验证生成原理实例分析
2019/06/05 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
javascript 尚未实现错误解决办法
2008/11/27 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
jQuery 选择器详解
2015/01/19 Javascript
浅析javascript的return语句
2015/12/15 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
Javascript 实现匿名递归的实例代码
2017/05/25 Javascript
深入了解javascript 数组的sort方法
2018/06/01 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
Python在Windows和在Linux下调用动态链接库的教程
2015/08/18 Python
Python判断变量是否为Json格式的字符串示例
2017/05/03 Python
Python引用传值概念与用法实例小结
2017/10/07 Python
Python探索之自定义实现线程池
2017/10/27 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
浅析Django 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求
2020/03/09 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
Python格式化输出--%s,%d,%f的代码解析
2020/04/29 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
Html5实现用户注册自动校验功能实例代码
2016/05/24 HTML / CSS
村居抓节水倡议书
2014/05/19 职场文书
法人代表资格证明书
2015/06/18 职场文书
国家助学金受助感言
2015/08/01 职场文书
python引入其他文件夹下的py文件具体方法
2021/05/23 Python
Java设计模式之代理模式
2022/04/22 Java/Android