如何使用Python管理Windows 10远程电脑且无需在远程端安装额外程序?
可行实现方案
最优推荐:使用pywinrm调用Windows原生WinRM服务
WinRM是Windows 10系统原生自带的远程管理服务,远程侧仅需首次做简单配置即可,无需安装Python或其他第三方程序,完全匹配你的需求。你此前遇到的WMI兼容问题、pypsexec的远程依赖问题都可以通过该方案避免。
1. 远程Windows 10首次配置(仅需操作1次)
用管理员权限打开远程设备的PowerShell,执行以下命令:
- 启用WinRM服务:
Enable-PSRemoting -SkipNetworkProfileCheck -Force - 配置防火墙放行WinRM流量:
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP" -RemoteAddress Any
如果你使用本地管理员账号(非域账号)远程访问,需要额外执行以下命令关闭UAC远程过滤:
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
2. 本地Python环境安装依赖
仅需要在你运行脚本的本地设备安装pywinrm:pip install pywinrm
3. 代码调用示例
执行CMD命令
import winrm # 替换为实际的远程设备IP、管理员账号密码 remote_session = winrm.Session('192.168.3.20', auth=('admin', '你的密码')) # 执行命令,示例为查看系统信息 run_result = remote_session.run_cmd('systeminfo') # 输出执行结果 print("命令输出:\n", run_result.std_out.decode('gbk')) if run_result.std_err: print("执行错误:\n", run_result.std_err.decode('gbk'))
执行PowerShell命令
import winrm remote_session = winrm.Session('192.168.3.20', auth=('admin', '你的密码')) # 执行PowerShell命令,示例为列出所有已安装软件 run_result = remote_session.run_ps('Get-CimInstance Win32_Product | Select-Object Name, Version') print("命令输出:\n", run_result.std_out.decode('utf-8')) if run_result.std_err: print("执行错误:\n", run_result.std_err.decode('utf-8'))
替代方案:基于Impacket的PsExec实现
如果你不想配置远程WinRM服务,可以使用该方案,仅需要远程设备开启默认的SMB服务即可,同样无需远程安装任何程序:
- 本地安装依赖:
pip install impacket - 该方案和微软官方的PsExec工具逻辑完全一致,通过SMB协议调用系统自带的服务执行命令,兼容性覆盖所有Win10版本
- 调用时直接传入远程地址、账号密码和要执行的命令即可完成操作
补充说明:你此前对pypsexec的认知存在误区,标准的基于SMB协议实现的pypsexec类库都不需要远程安装Python,你之前使用的应该是特殊封装的版本,上述两个方案都不存在远程依赖问题。
内容的提问来源于stack exchange,提问作者Argroth
相关产品推荐
相关产品推荐

