当前位置: 首页 > article >正文

Python脚本远程执行Windows命令?除了Paramiko,你还可以试试pywinrm(附Win10环境完整避坑指南)

Python远程操控Windows的终极方案pywinrm实战与避坑指南作为Python开发者我们早已习惯用Paramiko优雅地SSH到Linux服务器执行命令。但当场景切换到Windows环境时这种流畅体验往往会戛然而止。本文将带你探索Windows原生的远程管理协议WinRM以及如何用Python库pywinrm实现跨平台自动化操作。1. 为什么选择WinRM而非SSH在Linux世界SSH是远程管理的黄金标准。但Windows生态有着不同的设计哲学协议差异SSH基于加密通道和密钥交换WinRM(Windows Remote Management)基于WS-Management标准深度集成于Windows管理体系功能对比特性Paramiko(SSH)pywinrm(WinRM)认证方式密钥/密码NTLM/Kerberos/Basic传输加密强制可选默认端口225985(HTTP)/5986(HTTPS)命令执行Shell命令PowerShell/Cmd平台依赖需安装SSH服务内置Windows功能提示WinRM自Windows Vista起内置Server版默认启用Win10/11需手动配置2. 环境准备配置WinRM服务要让Windows接受远程管理请求需要先配置WinRM服务。以下是Win10专业版的完整配置流程2.1 基础配置以管理员身份启动PowerShell# 快速配置WinRM服务 winrm quickconfig -q # 检查服务状态 Get-Service WinRM常见报错及解决方案网络类型错误由于此计算机上的网络连接类型之一设置为公用...解决方案进入网络和共享中心将连接属性改为专用防火墙拦截netsh advfirewall firewall set rule groupWindows 远程管理 new enableyes2.2 认证与安全设置WinRM默认配置较为严格开发环境可适当放宽# 启用基础认证 winrm set winrm/config/service/auth {Basictrue} # 允许非加密传输仅测试环境 winrm set winrm/config/service {AllowUnencryptedtrue} # 设置信任主机替换为你的客户端IP winrm set winrm/config/client {TrustedHosts192.168.*}生产环境建议使用HTTPS(5986端口)配置证书认证保持加密传输3. Python端实战pywinrm详解配置好服务端后让我们转向Python实现。3.1 安装与基础连接pip install pywinrm基础连接示例import winrm # 创建会话 session winrm.Session( 192.168.1.100, # Windows主机IP auth(username, password), transportntlm ) # 执行PowerShell命令 result session.run_ps(Get-Process | Select -First 3) print(result.status_code) # 退出码 print(result.std_out) # 标准输出 print(result.std_err) # 错误输出3.2 高级功能实现文件传输方案WinRM本身不直接支持文件传输但可通过PowerShell实现script $content [System.Convert]::ToBase64String( [System.IO.File]::ReadAllBytes(C:\\temp\\example.txt) ) $content result session.run_ps(script) file_data base64.b64decode(result.std_out)异步命令执行shell_id session.protocol.open_shell() command_id session.protocol.run_command( shell_id, ping 8.8.8.8 -n 10 ) while True: output session.protocol.get_command_output(shell_id, command_id) if output.command_done: break print(output.std_out) time.sleep(1)4. 企业级应用封装在实际项目中我们需要更健壮的实现class WinRMClient: def __init__(self, host, username, password, **kwargs): self.session winrm.Session( host, auth(username, password), **kwargs ) self._verify_connection() def _verify_connection(self): try: self.session.run_ps(echo Connection test) except Exception as e: raise ConnectionError(fWinRM连接失败: {str(e)}) def execute(self, script, timeout30): try: result self.session.run_ps(script, timeout_sectimeout) if result.status_code ! 0: raise RuntimeError( f命令执行失败({result.status_code}): {result.std_err} ) return result.std_out except winrm.exceptions.WinRMTransportError as e: raise ConnectionError(传输层错误: str(e))使用示例client WinRMClient( win-server-01, admin, securePassword, transportkerberos, server_cert_validationignore ) disk_info client.execute(Get-PSDrive | Where-Object { $_.Free -gt 0 })5. 安全加固与性能优化5.1 安全最佳实践传输加密session winrm.Session( host, auth(user, pass), transportssl, server_cert_validationvalidate )认证升级使用Kerberos替代NTLM配置SPN(Service Principal Name)5.2 性能调优WinRM默认配置可能不适合大批量操作客户端配置session winrm.Session( ..., operation_timeout_sec60, read_timeout_sec70 )服务端优化winrm set winrm/config {MaxTimeoutms60000} winrm set winrm/config {MaxEnvelopeSizekb500}6. 典型应用场景6.1 批量服务器监控hosts [win-server-01, win-server-02] metrics {} for host in hosts: client WinRMClient(host, ...) cpu client.execute(Get-CimInstance Win32_Processor | Select -Expand LoadPercentage) mem client.execute(Get-CimInstance Win32_OperatingSystem | Select -Expand FreePhysicalMemory) metrics[host] {cpu: cpu, memory: mem}6.2 自动化部署deploy_script # 停止服务 Stop-Service MyApp -Force # 备份旧版本 Compress-Archive -Path C:\\App\\* -DestinationPath C:\\Backup\\app_$(Get-Date -Format yyyyMMdd).zip # 解压新版本 Expand-Archive -Path C:\\Updates\\app_v2.zip -DestinationPath C:\\App\\ -Force # 启动服务 Start-Service MyApp client.execute(deploy_script)在最近的一个自动化测试平台项目中我们使用pywinrm实现了对200 Windows测试机的集中管理。相比传统的RDP手动操作执行效率提升了近20倍特别是批量重启服务、收集日志等重复性任务现在只需一个Python脚本就能搞定所有机器。

相关文章:

Python脚本远程执行Windows命令?除了Paramiko,你还可以试试pywinrm(附Win10环境完整避坑指南)

Python远程操控Windows的终极方案:pywinrm实战与避坑指南 作为Python开发者,我们早已习惯用Paramiko优雅地SSH到Linux服务器执行命令。但当场景切换到Windows环境时,这种流畅体验往往会戛然而止。本文将带你探索Windows原生的远程管理协议Win…...

npm恶意软件包瞄准开发者,或致组织沦陷,专家给出防范建议

npm恶意软件包威胁开发者应用开发者收到警告,npm JavaScript注册表中出现了恶意版本的pgserve(一款用于应用开发的嵌入式PostgreSQL服务器)和automagik(一款AI编码工具),这些恶意软件包可能会感染开发者的计…...

2026 年深度调研:多款语音机器人实际使用效果大曝光

打破内卷——我们如何筛选真正的“AI”语音机器人当前企业采购语音机器人时,面临的最大困境并非技术缺失,而是严重的同质化内卷。大量厂商将传统IVR按键导航包装为“智能语音”,导致产品看似功能全面,实则缺乏理解复杂语义、处理动…...

CVAT标注实战:从AI自动标注到导出COCO/VOC数据集,保姆级避坑指南

CVAT标注实战:从AI自动标注到导出COCO/VOC数据集,保姆级避坑指南 在计算机视觉项目的实际开发中,数据标注往往是耗时最长、最容易出错的环节。CVAT(Computer Vision Annotation Tool)作为一款开源的图像标注工具&#…...

Stable Diffusion商业海报设计实战指南

1. 项目概述:当AI绘画遇上商业海报设计去年帮一家初创饮品品牌做新品推广时,他们需要在三天内产出20套不同风格的海报方案。传统设计流程根本来不及,我们尝试用Stable Diffusion生成基础视觉素材,最终提前12小时交付了所有方案。这…...

ESB企业服务总线怎么选?2026国产ESB厂商盘点:能力与差异分析

在数字化转型深水区的2026年,“ESB(企业服务总线)是否已经过时”的争议从未停止。不少声音认为,iPaaS、云原生集成工具已完全替代ESB,但IDC最新报告显示,国内企业集成平台市场仍保持18%年增速,其…...

终极Mac鼠标优化指南:3步让你的普通鼠标超越苹果触控板

终极Mac鼠标优化指南:3步让你的普通鼠标超越苹果触控板 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 你是否厌倦了在macOS上使用普…...

LaTeX浮动体位置控制进阶:从[htbp!]到精细化布局策略

1. 理解LaTeX浮动体的基础定位机制 当你第一次在LaTeX文档中插入图片或表格时,可能会发现它们经常"跑"到意料之外的位置。这种现象源于LaTeX独特的浮动体(float)机制——这是LaTeX为了优化页面布局而设计的核心功能。就像餐厅服务员…...

JVM核心架构与学习路径详解

JVM(Java虚拟机)是Java程序运行的基石,掌握其核心原理对于深入理解Java语言、性能调优及故障排查至关重要。以下教程将系统性地解构JVM的核心知识体系,并结合具体案例与代码进行说明。 一、JVM核心架构与学习路径 JVM的整体架构…...

LAN-Share终极指南:如何用零配置局域网文件传输工具提升工作效率300%

LAN-Share终极指南:如何用零配置局域网文件传输工具提升工作效率300% 【免费下载链接】LAN-Share Cross platform LAN File transfer application built with Qt C framework 项目地址: https://gitcode.com/gh_mirrors/la/LAN-Share 还在为局域网内文件传输…...

SRM如何实现采购高效协同?

许多企业上了SRM,却发现供应链还是“跑不起来”:下了订单,仓库不知何时到货;收了货,质检迟迟没任务;质检出问题,采购和财务被蒙在鼓里…… 其核心问题不是SRM没用,而是它和ERP、WMS、…...

LabVIEW串口通信保姆级教程:从虚拟串口配置到数据收发实战(附XCOM调试技巧)

LabVIEW串口通信实战指南:虚拟环境搭建与高效调试全解析 从零搭建虚拟串口开发环境 对于刚接触LabVIEW串口通信的开发者来说,最头疼的往往是硬件设备的缺失。其实借助虚拟串口工具,完全可以模拟真实硬件环境进行开发。这里推荐使用VSPD&#…...

如何快速突破百度网盘限速:Python直链解析工具的完整实战指南

如何快速突破百度网盘限速:Python直链解析工具的完整实战指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 百度网盘直链解析工具(baidu-wangpan-par…...

PS2EXE终极指南:快速将PowerShell脚本转换为EXE可执行文件

PS2EXE终极指南:快速将PowerShell脚本转换为EXE可执行文件 【免费下载链接】PS2EXE Module to compile powershell scripts to executables 项目地址: https://gitcode.com/gh_mirrors/ps/PS2EXE 你是否曾经想要将PowerShell脚本分享给他人,但又不…...

Python GMSSL v3.2.1实战:手把手教你搞定SM2国密算法的签名与验签(附ID处理避坑指南)

Python GMSSL v3.2.1实战:SM2国密算法签名与验签全流程解析 当安全工程师第一次在项目中看到"需要支持SM2签名"的需求时,往往会被各种国标文档和参数转换搞得晕头转向。作为我国自主研发的椭圆曲线公钥密码算法,SM2在政务、金融等领…...

从‘一条线’到‘一张图’:手把手拆解线阵CCD相机如何拍出高精度大图(以TCD1501C为例)

从‘一条线’到‘一张图’:手把手拆解线阵CCD相机如何拍出高精度大图(以TCD1501C为例) 在工业检测、材料科学和精密测量领域,线阵CCD相机凭借其独特的一维成像方式,能够实现远超面阵相机的分辨率和视野范围。以TCD1501…...

Ubuntu 22.04 + Python 3.10 保姆级教程:手把手搞定nnUNetV2环境配置与MSD数据集转换

Ubuntu 22.04 Python 3.10 实战指南:nnUNetV2环境配置与MSD数据集高效转换全流程 在医学图像分割领域,nnUNetV2以其出色的自适应能力和稳定的性能表现,已成为众多研究团队的首选框架。然而对于刚接触该框架的研究人员和开发者而言&#xff…...

深度测评Alpha AI:大模型加持下,这款AI量化引擎表现如何?

在技术加速融合的当下,智能工具领域正在经历一场深刻的技术洗牌。市面上标榜“智能”的系统层出不穷,但能够落地并解决实际痛点的相对有限。近期,主打“跨模态大模型”与“智能托管执行”的Alpha AI引起了业内的广泛关注。作为深耕行业的前沿…...

5步快速上手《缺氧》存档编辑器:Duplicity终极指南

5步快速上手《缺氧》存档编辑器:Duplicity终极指南 【免费下载链接】oni-duplicity A web-hosted, locally-running save editor for Oxygen Not Included. 项目地址: https://gitcode.com/gh_mirrors/on/oni-duplicity Duplicity是一款基于Web的《缺氧》&am…...

抖音批量下载工具:从零开始构建高效视频收集工作流

抖音批量下载工具:从零开始构建高效视频收集工作流 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support.…...

微信好友关系一键检测:终极免费工具快速发现谁删除了你

微信好友关系一键检测:终极免费工具快速发现谁删除了你 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends …...

VBA Replace函数实战指南:从基础语法到高效数据处理

1. VBA Replace函数基础入门 刚接触VBA时,Replace函数是我最早掌握的文本处理工具之一。这个看似简单的函数,在实际办公场景中能解决80%的文本替换需求。先来看它的基本语法结构: Replace(expression, find, replace[, start[, count[, compa…...

均方误差(MSE)

均方误差(MSE) 均方误差 先算误差,再平方,最后取平均。它是回归问题里最常用的损失函数,用来衡量预测值和真实值差了多少。 1. 公式 MSEN1​∑i1N​(yi​−y^​i​)2 yi​:真实值 y^​i​:模型…...

如何突破iOS系统限制?探索TrollInstallerX的技术实现路径

如何突破iOS系统限制?探索TrollInstallerX的技术实现路径 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 在iOS生态系统中,应用部署一直受到严格…...

告别AT指令!用Arduino IDE和ESP8266库,5分钟搞定OneNET数据上传

5分钟极简开发:用Arduino IDE实现ESP8266与OneNET的无缝对接 第一次接触物联网开发时,我被各种AT指令折磨得够呛——每次修改参数都要重新发送一长串命令,调试过程像在走钢丝。直到发现Arduino IDE配合ESP8266库的"魔法"&#xff0…...

别再只用to_string()了!盘点Pandas中DataFrame与字符串互转的5种方法及适用场景

Pandas数据序列化全指南:5种DataFrame与字符串互转方法深度解析 在数据分析的日常工作中,我们经常需要在DataFrame和字符串格式之间进行转换——无论是为了临时存储、跨系统传输,还是向非技术同事展示数据。虽然df.to_string()是最为人熟知的…...

AEUX终极指南:如何实现从设计到动画的无缝工作流?

AEUX终极指南:如何实现从设计到动画的无缝工作流? 【免费下载链接】AEUX Editable After Effects layers from Sketch artboards 项目地址: https://gitcode.com/gh_mirrors/ae/AEUX 你是否曾为将Figma或Sketch中的精美设计转换为After Effects动…...

量子计算里的‘万能钥匙’:从受控U门到通用量子门集的构建心法

量子计算里的‘万能钥匙’:从受控U门到通用量子门集的构建心法 量子计算正从实验室走向现实应用,而理解其底层逻辑的关键在于掌握量子门这一"原子操作"。与经典计算机中晶体管组成逻辑门类似,量子计算机通过量子门的组合实现复杂运…...

Get cookies.txt LOCALLY:本地Cookie导出工具的终极安全解决方案

Get cookies.txt LOCALLY:本地Cookie导出工具的终极安全解决方案 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY 在当今Web开发和自动化…...

【Overleaf实战】让IEEE LaTeX模板完美兼容中文:从编码原理到一键配置

1. 为什么IEEE模板默认不支持中文? 第一次在Overleaf上用IEEE模板写中文论文时,我也遇到过编译后满屏问号的崩溃场景。后来发现这背后藏着三个关键因素:LaTeX引擎的历史包袱、IEEE模板的设计初衷,以及编码方式的代际差异。 早期的…...