基于winrm实现远程操作win
一、winrm什么是?
winrm的全称为windows remote management server,即windows远程管理服务。winrm服务是powershell的远程管理服务,说白了就是在机器A上连接机器B的powershell,并通过powershell编程控制机器B。
支持powershell4.0+ 版本
二、python编写脚本
1、配置防火墙出站入站规则,放行5985 端口
2、进入powershell, 配置(以管理员的身份)
#查看配置信息,有东西返回证明是winrm是开启的的 (若报错则用以下命令进行配置)
winrm enumerate winrm/config/listener
#对winrm service 进行基础配置
winrm quickconfig
#再次查看是否开启winrm
winrm enumerate winrm/config/listener
#为winrm service 配置auth:
winrm set winrm/config/service/auth '@{Basic="true"}'
#为winrm service 配置加密方式为允许非加密:(共有网络无法设置,需要改成专用网络)
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
3、python实现远程操作win,执行cmd命令
3.1 pip下载winrm
pip install winrm
3.2 编写代码
import winrm
ip = '192.168.3.176' # 远程机器ip
userName = 'Administrator' # 用户名
password = 'Admin123' # 密码
wintest = winrm.Session('http://'+ip+':5985/wsman',auth=(userName,password))
ret = wintest.run_cmd("ipconfig")
print(ret)
print(ret.std_out.decode('gbk')) #因为cmd默认使用gbk编码,而python默认使用utf-8,所以要用gbk进行解码
print(ret.std_err)