Background
- 在实际项目中,一般使用Linux作为生产服务器,但有时就会出现一些特殊情况,你只能使用windows作为作为服务器,比如说一个用fortran编写的仿真程序,编译环境用的intel的oneAPI,按理说这个编译器是是支持windows、linux和mac平台的,但是不同平台的编译命令还不一样,无法找到相应的编译参数,没办法,只能使用windows作为服务器了。
- python3中远程控制库中,像远程控制linux服务器的
paramiko,同样也有远程控制windows服务器的pywinrm,可以远程执行 cmd、powerSehll命令。不过,需要在被控端 windows 开启 winrm 服务。- pywinrm官方文档
1、在被控端 windows 开启 winrm 服务
-
以管理员启动cmd

-
启动 winrm 服务
如果遇到网络设置问题如下图1,可以win+i,然后按照下图2进行操作设置。
winrm quickconfig -q


- 查看winrm服务的状态
winrm e winrm/config/listener
# 或者
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"}'

2、在控制端需要安装pywinrm库
pip3 install pywinrm
3、通过 pywinrm 远程执行 cmd、powerSehll命令
import winrm
def win_cmd(cmd: str):
"""远程调用 windows 执行命令"""
hostname = '110.110.110.110'
username = 'user1'
password = '123456'
wintest = winrm.Session('http://' + hostname + ':5985/wsman', auth=(username, password))
res = wintest.run_cmd(cmd)
if res.status_code == 0:
res = res.std_out.decode().replace('\n', '').replace('\r', '')
return {'sta': 200, 'res': res}
else:
return {'sta': 201, 'res': res.std_err}
def main():
"""主函数"""
cmd = 'python3 -V'
print(win_cmd(cmd))
if __name__ == '__main__':
main()









![[矩阵论] Unit 1. 线性空间与线性变换 - 知识点整理](https://img-blog.csdnimg.cn/fe40a9dc0ac546488e88edca5cbed325.png)






![[附源码]JAVA毕业设计律师事务所网站(系统+LW)](https://img-blog.csdnimg.cn/8403344456ae4ffbbe538c1716c6c7dd.png)


