windows虚拟机批量安装程序

2013年11月01日 11:28

需要在几百台虚拟机上部署开发好的监测软件,运维人员表示手工操作要崩溃的。我想应该有一种方法可以实现自动安装,调研一下,要做到自动安装,需要以下几个条件。
1. psTools工具包,可以远程执行命令
2. 安装包需要支持静默安装
3. 需要通过命令行下载安装包
 
psexec.exe可以远程执行命令,提供远程windows虚拟机的ip和具有管理员权限的用户名和密码,就可以远程执行本地命令。
 
1
psexec.exe \\ip_addr -u username -p password  -c -w C:\  runupdate.bat
 
使用nsis制作安装包,使用/S参数时,nsis安装包会静默安装,在脚本中安装完成的地方加入
Exec “第一个启动文件”
在静默安装完成后,就立即启动。
 
使用http下载文件,将安装包放置于linux主机的web目录下,使用网上分享的bat支持http下载脚本即可,需要注意windows不区分大小写,文件名全部用小写防止出错。
 
bat通过http下载
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
echo=1/*>nul&@cls
@echo off
 
call :http "http://xxx.com/download/installer.exe" C:\installer.exe
 
 
 
c:
C:\installer.exe /S
 
if %ERRORLEVEL% NEQ 0 goto failed
echo "installer updated DONE!"
 
cd ..
echo %computername% %date% %time% >> ComputerList.txt
echo "Updating of installer succeeded. "
goto end
 
:faile
echo $%computername% %date% %time% >> ComputerList.txt
echo "Updating of installer failed. "
 
:end
c:
 
pause
goto :eof
 
::-----------------下面是函数定义区域-----------------
:http
echo Source:      "%~1"
echo Destination: "%~f2"
echo Start downloading. . .
cscript -nologo -e:jscript "%~f0" "%~1" "%~2"
echo OK!
goto :eof
 
*/
var iLocal,iRemote,xPost,sGet;
iLocal =WScript.Arguments(1);
iRemote = WScript.Arguments(0);
iLocal=iLocal.toLowerCase();
iRemote=iRemote.toLowerCase();
xPost = new ActiveXObject("Microsoft"+String.fromCharCode(0x2e)+"XMLHTTP");
xPost.Open("GET",iRemote,0);
xPost.Send();
sGet = new ActiveXObject("ADODB"+String.fromCharCode(0x2e)+"Stream");
sGet.Mode = 3;
sGet.Type = 1;
sGet.Open();
sGet.Write(xPost.responseBody);
sGet.SaveToFile(iLocal,2);
 
本文参考:

http://blog.csdn.net/cneducation/article/details/3997166

下载脚本参考:

http://www.newlifex.com/showtopic-149.aspx