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
下载脚本参考: