windows虚拟机批量安装程序

2013年11月01日 11:28

需要在几百台虚拟机上部署开发好的监测软件,运维人员表示手工操作要崩溃的。我想应该有一种方法可以实现自动安装,调研一下,要做到自动安装,需要以下几个条件。
1. psTools工具包,可以远程执行命令
2. 安装包需要支持静默安装
3. 需要通过命令行下载安装包
 
psexec.exe可以远程执行命令,提供远程windows虚拟机的ip和具有管理员权限的用户名和密码,就可以远程执行本地命令。
 
psexec.exe \\ip_addr -u username -p password  -c -w C:\  runupdate.bat
 
使用nsis制作安装包,使用/S参数时,nsis安装包会静默安装,在脚本中安装完成的地方加入
Exec “第一个启动文件”
在静默安装完成后,就立即启动。
 
使用http下载文件,将安装包放置于linux主机的web目录下,使用网上分享的bat支持http下载脚本即可,需要注意windows不区分大小写,文件名全部用小写防止出错。
 
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