最近有个项目,以c/s架构开发,客户端需要部署到50多台客户机上。但是软件的维护管理(包括安装、更新等)都由一个人来做,此人也不希望客户端程序自己悄悄更新。所以必须设计一种软件远程批量安装和更新的方案,来支持用户提出的这种需求。

问了一下度娘,发现PSTools这个工具非常好用。于是决定试一试。

思路其实很简单,以一台机器作为管理机,将需要更新的程序、文件及更新工具放在管理机上。管理员从管理机上远程控制其他客户机,依次在每台客户机上安装或更新软件。人工操作的方式就是一台台的通过远程桌面连接来进行。而我采用的办法只是将人工操作改为了通过脚本来自动实现。

远程安装或更新的步骤如下:

1)将管理机上放置待更新程序和文件的文件夹设置为共享文件夹。

2)从管理机共享文件夹中拷贝待更新程序和文件到远程客户机的指定位置上。

3)杀掉远程客户机上老的程序。

4)备份远程客户机上老程序的个性化配置文件。

5)删除远程客户机上老程序的安装目录。

6)在远程客户机上静默安装新的客户端程序。

7)还原远程客户机的个性化配置文件。

8)启动远程客户机上的客户端程序。

PsTools是一个工具集,包含了多个工具,此处只用到了其中的psexec.exe。该工具的主要使用命令如下:

psexec.exe \\remoteip -u username -p password -c file

其中,file必须是可执行文件,可以是脚本,可以是安装程序。

注意:此命令的使用需要管理机以Administrator(不能是具有管理员身份的其他用户名)身份登录,并知道客户机的Administrator用户的密码。且要求管理机和客户机的用户名、密码是一致的。这个要求有点高,貌似有些设置方法可以使之变得更友好。由于时间原因,及在我的应用场景下是可以满足上述条件的,具体设置方法未曾深入研究。

实现方法

完成后的批量更新工具目录如下图所示:

其中:

PsTools是从网上下载的PsTools工具包,主要需要该文件夹下的psexec.exe文件。

myclient.exe是新版客户端安装程序。

update.bat是更新每一台客户机时要调用的脚本。

batch.bat是更新所有客户机的总脚本。

使用时只需要双击batch.bat脚本即可(当然在使用前需要对脚本中的一些变量进行个性化设置)。

batch.bat脚本内容如下:

首先需要设置如下变量(这些变量一般只需要在第一次使用时设置即可):

LocalPath:批量更新工具在管理机中的本地路径。

ProgName:客户端程序的程序名。

user:管理员用户名,一般是administrator。

pwd:管理员密码。需要所有客户机与管理机的密码都相同。

可以看出,在batch.bat脚本中通过psexec.exe依次远程控制客户机来执行update.bat脚本。

update.bat脚本内容如下:

首先需要设置如下变量(这些变量一般只需要在第一次使用时设置即可):

ProgName:客户端程序的程序名。

DstDir:将更新程序和文件拷贝到客户机上的目标路径。

SharedPath:管理机的共享url。

update.bat脚本共分为如下几步:

(1)拷贝更新程序和文件到客户机的DstDir中。命令为:xcopy %SharedPath% /s %DstDir% /y

(2)杀掉客户机上的原程序。命令为:taskkill /F /im %ProgName%.exe

(3)备份个性化配置文件。命令为:xcopy "C:\Program Files (x86)\iplustek\%ProgName%\%ProgName%.exe.config" "C:\Program Files (x86)\iplustek\" /y

(4)删除原有安装目录。命令为:rd /s/q "C:\\Program Files (x86)\\iplustek\\%ProgName%"

(5)安装新程序。命令为:%DstDir%\%ProgName%.exe

(6)用个性化配置文件覆盖默认配置文件。命令为:xcopy "C:\Program Files (x86)\iplustek\%ProgName%.exe.config" "C:\Program Files (x86)\iplustek\%ProgName%\%ProgName%.exe.config" /y

(7)启动新程序。由于psexec是以dos方式远程控制客户机的,貌似无法打开界面程序。在此处未成功通过命令来启动更新后的程序。需要工作人员在使用时手动打开。

运行过程

batch.bat脚本是由许多个psexec命令组成的,每个命令的执行过程是一样的,所以以此命令为样例执行如下:

从执行过程中可以看出,在执行了psexec命令后,首先会尝试使用命令中的用户名和密码登录客户机,如果登录成功,就会进入到客户机的cmd命令行窗口(不会另外打开窗口,但实际已经切换,如下图中红色框中显示,已经进入客户机的system32目录中了)。

后面会在客户机的命令行窗口中依次执行update.bat中的每一行命令,同时可以看到命令执行结果。在本脚本中,杀掉原有已运行进程、删除原安装目录、备份还原个性化配置文件等命令在第一次安装时有可能执行失败,但是并不影响程序的批量安装。只是在安装之后需要手动进行个性化配置。

所有update.bat中的命令执行结束后,退出客户机的命令行窗口,返回到本机,如下图所示。

注意事项:使用本方法需要进行一些远程设置和防火墙设置,使用前需要考虑机群的安全性问题。

用PSTools实现软件的远程批量安装或更新相关推荐

  1. python批量安装软件,[Python自学] 批量安装依赖

    一.从开发环境导出依赖 在虚拟环境中运行命令: (venv_1) [root@centos-venv-fb ~]# pip3 freeze > ~/requirements.txt 可以将当前虚 ...

  2. hadoop批量安装第三方包

    将c08 机器的IP地址写进C08 文件中,准备好安装包 chardet-2.1.1.tar.gz 通过rsync.sh 脚本进行远程批量安装. more rsync.sh #!/bin/bash p ...

  3. 远程批量自动安装中标麒麟操作系统的方法

    远程批量自动安装中标麒麟操作系统的方法 1 安装方法及过程 2 系统安装服务器搭建 2.1 DHCP服务器搭建 2.2 TFTP服务器搭建 2.3 FTP服务器搭建 3 相关技术原理 3.1 WOL技 ...

  4. 学校机房统一批量安装软件的方法来了

    由于学校机房教室里的电脑有很多,为保证教学效率的提高,机房整体电脑在安装软件时,不可能对每个软件逐一安装,这样的话会大大降低机房教学环境的布局速度.帮助机房统一批量安装应用程序的管理软件有很多,但是在 ...

  5. linux批量安装 五大开源软件挨个看,Linux批量安装 五大开源软件挨个看(1)(5)

    5.OpenQRM 下面的话摘自OpenQRM的官方网站: "OpenQRM是下一代开源数据中心管理平台,它采取了完全可插拔的架构设计,支持自动.快速和基于设备的部署,提供了监控功能,支持高 ...

  6. putty 32位_了解linux系统远程操作软件,putty的安装过程!

    linux小白到大神的成长之路:了解linux系统远程操作软件,putty的安装过程! 本经验由宗龙龙原创,全文共600多字,阅读需要14分钟,如果文中存在错误,还请大家多多指点,我会积极改进的! 前 ...

  7. 使用域控批量安装软件

    域自带的批量部署软件有多种方式: 1,发布,域服务器发布软件,客户端到添加删除程序─添加新程序中点击安装 2,分配指派到用户,在客户端用户登录时自动安装 3,分配指派到计算机,在客户端计算机重启时自动 ...

  8. java oss 批量传输_如何批量安装软件

    重做系统的话,有太多软件需要安装,但是如果管理得当,就可以做到批量安装软件.就像电脑管家那样批量打补丁,安装需要的软件. 尽可能把自己的软件放置在一个文件夹内.每个软件放置一个新的文件夹,方便存储多个 ...

  9. BAT批处理脚本实例学习(四)批量安装软件

    作为一名IT运维人员,需要经常性的给很多电脑安装同一批软件,每次一个一个点又太费事! 这个时候就需要批处理脚本来批量安装软件了. 网上查了很多start /wait的参数,无果,无奈,只能一个个测试, ...

最新文章

  1. mysql 苏勇,你不知道的Linux使用技巧~
  2. 求10以内平均数的c语言,求助 给小学生出题,自己选加减乘除 做10题 10以内的数 然后统计分...
  3. 作者:刘大伟(1984-),男,博士,烟台中科网络技术研究所助理研究员。
  4. orm2 中文文档 3.2 模型验证器
  5. MySQL下bin-log的三种模式(ROW、Statement、Mixed)
  6. JavaScript:Array属性方法
  7. Apache Struts2高危漏洞(S2-057CVE-2018-11776)
  8. Excel文件计算机一级,计算机一级excel操作练习题文件
  9. 俄罗斯方块java分析_[源码和文档分享]基于Java的俄罗斯方块游戏
  10. H265/HEVC Codec编解码(MP4和TS)
  11. excel使用mysql数据库查询语句_如何通过Excel查询MySQL数据库
  12. 非常实用的一键开关机电路
  13. python超市进销存管理系统
  14. 图表横坐标怎么改倾斜_Excel图表横轴文字太长,斜着太丑,如何自动换行显示...
  15. 如何使用阿里云进行人脸和身份证头像验证比对(人证核验接口API)--java
  16. 【系统集成项目管理工程师】项目立项
  17. 【Unity】Inspector属性
  18. 《机器学习实战:基于Scikit-Learn、Keras和TensorFlow(第2版)》学习笔记
  19. android 串口通信打开失败
  20. ES6/ES7/ES8新特性汇总

热门文章

  1. 从实时音视频的微场景看混音技术
  2. SOA为什么不“香”了?| 建设数据中台系列(三)
  3. 龙傲天程序员之路 其一
  4. WinCE 系统界面修改偏方 一
  5. 3. 尚融宝相关知识
  6. QT5.14.2编译安装QWT
  7. Android——BLE配对绑定实现
  8. Hi3798日志分析-海思
  9. 配送中心的现代化物流技术
  10. WIN10磁盘100%解决方法