使用winRM远程访问Windows系统,并执行指定命令,或调用执行指定bat文件
一、安装依赖
用阿里镜像源下载,这里下载依赖时为pywinrm
而不是winrm
pip install pywinrm -i https://mirrors.aliyun.com/pypi/simple/
二、代码实现
import winrm# from pywinrm import WinRMShell# 配置远程连接信息
remote_ip = "10.1.1.1" # 替换为目标IP
username = "user" # 管理员账号
password = "pwd" # 密码
bat_path = r"D:\user\test_bat\test.bat" # 远程主机上的BAT路径try:# 创建WinRM会话session = winrm.Session(remote_ip,auth=(username, password),transport="ntlm",server_cert_validation="ignore" # 忽略证书验证(测试用))# 执行BAT脚本# command = f"cmd /c call {bat_path}"# result = session.run_ps(command) # 使用PowerShell包装执行command = "cmd /c 'java -version 2>&1'" # 将 stderr 重定向到 stdoutresult = session.run_ps(command)output = result.std_out.decode("gbk")print("Java版本信息:", output)# 输出结果print(f"Exit Code: {result.status_code}")print("Output:", result.std_out.decode("gbk")) # Windows中文用GBK编码print("Error:", result.std_err.decode("gbk"))except Exception as e:print(f"远程执行失败: {str(e)}")
三、输出示例:
Exit Code: 0
Output: java version "1.8.0_341"
Java(TM) SE Runtime Environment (build 1.8.0_341-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode)Error: Process finished with exit code 0