千家信息网

shell实现批量在多台windows服务器上执行同一命令并获取返回结果

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,1. 需求在对windows服务器的运维当中,如果要查看当前的主机名、资源使用、软件安装情况等,大家是怎么操作呢,是登进去鼠标挨着点击查看,还是通过命令呢?貌似命令的方法比较专业一点。但是,如果要查看
千家信息网最后更新 2026年11月01日shell实现批量在多台windows服务器上执行同一命令并获取返回结果

1. 需求

在对windows服务器的运维当中,如果要查看当前的主机名、资源使用、软件安装情况等,大家是怎么操作呢,是登进去鼠标挨着点击查看,还是通过命令呢?貌似命令的方法比较专业一点。但是,如果要查看50台、100台甚至更多服务器的这些信息,好像就不这么简单了。

有没有想过,敲一条命令,十几秒钟,就可以查看多台windows服务器的主机名、资源使用、软件安装情况等信息呢;或者还是通过一条命令,就可以启动或者停止N台windows服务器的系统服务、重启\关机、修改注册表等等,你能想到的大部分操作,在经过前期简单部署后,以后只通过一条命令,就可以实现同时对多台windows服务器的管理。下面就把这个设想实现。

2. 实现原理及展示

2.1原理

通过我在shell下写的脚本程序,利用Python中的paramiko模块,通过ssh协议验证windows的登录信息,然后调用windows的PowerShell来实现命令的执行。目前测试过windows server2008R2和 2012R2 服务器,可以正常执行。

2.2展示2个简单例子:执行脚本后,输入windows的PowerShell命令即可

查询主机名

查看CPU使用率

只要是PowerShell支持的,都可以批量执行了。我这里只是2台测试,当然100台也一样出结果。

3. 准备

3.1 一台Centos系统: 我使用的虚拟机centos6.6 用来执行脚本,然后执行windows命令。需要有python(一般已经安装了)

3.2 软件:freesshd 官网上下载即可,主要是在被管理的windows服务器上安装,实现ssh验证

3.3 软件:SecureCRT或者Xshell 用来连接Centos虚拟机

3.4 可选软件:WinSCP 如果需要分发文件功能的话,windows服务器上还要需要安装此软件

4. 实现步骤及示例

4.1 各windows服务器安装freesshd和winscp(winscp可选): 测试中我使用了2台windows虚拟机

Winscp和freesshd的安装直接默认下一步即可;

Winscp安装完成后先在powershell里面执行命令,缓存主机密钥

cd 'C:\Program Files (x86)\WinSCP\' ; ./winscp.exe /console /command 'option batch continue' 'option confirm off' 'open sftp://root:root密码@centos主机IP:centos主机ssh端口

执行后按Y即可,如图:

freesshd安装完成后需要稍作设置,如图:

第一次运行freesshd如图

然后点击右下角的freesshd图标进行相关设置,SSH选项卡中,将Command shell设置成C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe如图:

Users选项卡中点击"Add…"

在弹出的窗口加入windows服务器的管理员账号,然后将Shell打上√ 如图:

最后可选择是否在Automatic updates里面关闭自动更新,我一般选择关闭

设置完成后,在开始-运行 里面键入"services.msc"将freesshd服务重启一下

Sshd在windows服务器上设置完成,可以通过telnet ssh端口的方式测试到windows的sshd服务是否正常,如telnet X.X.X.X 22

4.2 安全设置(可选):各windows服务器上配置ipsec只允许我们的centos服务器连接sshd的22端口,这样就避免了其他未授权的ssh连接,建议设置(不设置或者会设置的可跳过此步骤下列内容)。

开始-运行 里面键入"gpedit.msc" 进入 Windows设置-安全设置-IP安全策略,在本地计算机 创建策略即可:

先设置允许的主机,这里我们需要把centos主机加入允许,如部分截图,没截图的步骤默认点击"下一步":

完成后"确定"即可,然后开始建立一条拒绝任何地址(源地址:任何IP地址)到windows本机地址sshd端口的策略,如图:

确定后安全设置完成,然后分配策略使其生效,如图:

如果启用了防火墙的话,还需要在防火墙里面设置允许freesshd程序通过防火墙,设置完成后可以在centos服务器上telnet X.X.X.X(windows服务器IP) 22 的方式来测试连接是否OK,如图测试正常:

4.3脚本准备

1)在本文后面下载shell脚本

2)在centos服务器中上传脚本,命令rz然后选择脚本上传即可(没有rz命令的通过yum install -y lrzsz命令安装),如图:

3)vim run_win_same_cmd.sh命令修改脚本,将后续要管理的各个服务器IP、用户名、密码加入其中,如图格式加入,然后保存即可。

注意ip,user,pwd的顺序是一一对应的,对应错误的话是无法通过验证的:

也可在windows中修改好了再上传到centos服务器,但是要注意最好运行下dos2unix命令转换一下。

4.4运行命令

1)在centos服务器中执行sh run_win_same_cmd.sh即可(注意脚本路径正确),如图,运行后提示选择,我们选择 1.批量运行windows命令 ,回车后提示输入windows命令,这里我们用一个简单的命令hostname来查看,如图:

再来个复杂点的命令(当然这种有点长的命令直接复制黏贴过来就行了),我们需要查看N台服务器各自的磁盘剩余空间:

不熟悉powershell命令的话可以参考下面链接里面一些常用的Powershell运维命令,当然,更多的强大命令就根据自己需要去发现了。

链接:Windows PowerShell运维人员常用命令收集整理

2)如果需要分发文件或者软件的话,可以在运行脚本后,选择2.批量分发文件到windows ,可以实现把文件批量分发到各个windows服务器,如图:

在windows服务器上查看文件已经复制过来了

5. 脚本下载地址






服务 命令 服务器 如图 脚本 主机 运行 软件 测试 选择 文件 安全 地址 端口 策略 管理 信息 步骤 防火墙 防火 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网项目 深圳互联网络科技有限公司 互联网科技公司怎么样 中国互联网科技发展 互联网科技排名 卓越科技(互联网 ) 小马过河互联网科技 长亮科技互联网金融 深圳卡尔迅互联网科技有限公司怎么样 新华互联网科技校企合作 承德科技产业互联网发展 湖南一路畅行互联网科技 崇明区互联网教育科技售后服务 互联网公司黑科技创始人 深圳艾果互联网通讯科技 银行科技岗属于互联网吗 半导体行业属于互联网高科技类吗 悟空问答互联网科技 马化腾互联网科技教学 前海云享互联网科技 山东特亿宝互联网科技有限公司 狮子座互联网科技培训 华脉科技工业互联网产品 江苏南京365互联网科技 畅思互联网科技 工业互联网展湾科技股份有限公司 梅州GM互联网络科技有限公司 启辰互联网科技 普陀区互联网教育科技管理办法 互联网科技大佬云集
0