系统远程安装
一、现有如下需求:
1.分行有20台左右瘦客户机,一台文员机;
2.在总部可以通过控制台(控制软件)统一管理控制这20台瘦客户机,文员机可以通过远程桌面控制
3.现需要统一给分行这20台瘦客户机升级系统
二、解决思路
1.将新系统(Ghost文件)先发送到分行文员机(通过FTP)。
2.20台瘦客户机通过控制台下发批处理,批处理动作:先从瘦客户机压缩出一个8G左右的盘,用于放新系统Ghost文件;再在瘦客户机
创建一个WinPE启动项,系统重启后进入WinPE,自动调用Ghost64应用程序执行系统Ghost;
三、实施
第一步:文员机搭建FTP(这步简单,系统自带FTP或下载一个FTP软件都可以),设置FTP用户名,密码分别为test,test1;
新系统Ghost文件放在FTP根目录的SystemISO文件夹下,命名为sys.gho。
第二步:瘦客户机压缩8G盘脚本
:diskpart rem 1.将硬盘改为两个分区,一个系统分区,一个8G的用于放系统的备用分区 rem 2.只对中文系统存在一个硬盘且只有主要,扩展,逻辑这三种分区作过测试 rem 3.处理流程:第一步获取磁盘信息保存到diskpart.txt文本,第二步从文本中筛选出分区信息,删除非第一分区,恢复分区以外的其它分区,再进行扩盘,压缩,新建 ::开启windows磁盘管理相关服务
net start defragsvc
::导出磁盘列表放到diskpartLog.txt echo>diskpart1.script select disk 0 echo>>diskpart1.script list partition echo>>diskpart1.script exit diskpart /s diskpart1.script >diskpartLog.txt ::根据磁盘列表信息,删除非第一分区,恢复分区以外的其他分区(即只保留C盘系统分区) echo>diskpart2.script select disk 0 for /f "tokens=1,2,3,4" %%a in (diskpartLog.txt) do if %%a == 分区 (if not %%d==大小 (if not %%C==恢复 (if %%b gtr 1 (echo>>diskpart2.script select partition=%%b echo>>diskpart2.script delete partition noerr)))) for /f "tokens=1,3" %%a in (diskpartLog.txt) do if %%a == 分区 (if %%b==扩展的 (echo>>diskpart2.script select partition=0 echo>>diskpart2.script delete partition noerr)) ::先整合然后压缩一个8G的D盘 echo>>diskpart2.script select partition=1 echo>>diskpart2.script extend noerr echo>>diskpart2.script shrink desired=8000 noerr echo>>diskpart2.script create partition primary noerr echo>>diskpart2.script format fs=ntfs label="D" quick noerr echo>>diskpart2.script assign letter=d noerr echo>>diskpart2.script Exit diskpart <diskpart2.script >>diskpartLog.txt del /f /q *.script
第三步:制作WinPE.wim系统并添加Ghost.exe应用程序
1)先官网下载Windows ADK及对应的Windows PE加载项(要联网下载,需要点时间),安装完成后,右键以管理员身份运行“部署和镜像工具环境”,输入
”copype amd64 D:\WinPE“ 复制WinPE文件(64位WinPE)到D盘WimPE目录。
2)这里我们主要要用到的是Windows PE启动镜像boot.wim,它位于上一步所获得的WinPE文件夹下,路径为:D:\WinPE\media\sources\boot.wim,接下来是操作
这个PE启动镜像文件boot.wim,主要操作两个,一个是将Ghost64.exe应用程序复制进去,再一个是编辑这个PE的启动脚本(startnet.cmd)让PE启动后自动运行Ghost64.exe程序,执行系统恢复。
先挂载boot.wim:
复制Ghost64.exe应用程序到PE中
编辑PE启动脚本
编辑完startnet.cmd后记得,保存退出。
重新封装启动镜像boot.wim
boot.wim封装好后,复制一份到文员电脑FTP的根目录下SystemISO文件夹下,并改成Win10PE.wim;
第四步:在现有系统中添加WinPE启动项
bcdedit /create {ramdiskoptions} bcdedit /set {ramdiskoptions} ramdisksdidevice partition=C: bcdedit /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
::以上是在现有系统BCD存储中创建WinPE启动所需的{ramdiskoptions}对象,没有这个启动WinPE会蓝屏 for /f "tokens=2" %%a in ('bcdedit /create /d "Win10PE" /application osloader') do ( bcdedit /set %%a device ramdisk=[C:]\Boot\Win10PE.wim,{ramdiskoptions} bcdedit /set %%a path \windows\system32\winload.exe bcdedit /set %%a osdevice ramdisk=[C:]\Boot\Win10PE.wim,{ramdiskoptions} bcdedit /set %%a systemroot \windows bcdedit /set %%a winpe yes bcdedit /set %%a detecthal yes bcdedit /set %%a inherit {bootloadersettings} bcdedit /set %%a ems yes bcdedit /displayorder %%a /addfirst bcdedit /default %%a bcdedit /timeout 2)
好了,到这里基本都完成了,最后附上全部脚本代码:
@echo off&setlocal enabledelayedexpansion&title AutoInstallSystem rem:设置开关用于防误操作 if not [%1] == [yes] (goto :eof) :diskpart rem 1.将硬盘改为两个分区,一个系统分区,一个8G的用于放系统的备用分区 rem 2.只对中文系统存在一个硬盘且只有主要,扩展,逻辑这三种分区作过测试 rem 3.处理流程:第一步获取磁盘信息保存到diskpart.txt文本,第二步从文本中筛选出分区信息,删除非第一分区,恢复分区以外的其它分区,再进行扩盘,压缩,新建分区; if not exist c:\autoinstallSys (mkdir c:\autoInstallSys) cd /d C:\autoInstallSys net start defragsvc echo>diskpart1.script select disk 0 echo>>diskpart1.script list partition echo>>diskpart1.script exit diskpart /s diskpart1.script >diskpartLog.txt echo>diskpart2.script select disk 0 for /f "tokens=1,2,3,4" %%a in (diskpartLog.txt) do if %%a == 分区 (if not %%d==大小 (if not %%C==恢复 (if %%b gtr 1 (echo>>diskpart2.script select partition=%%b echo>>diskpart2.script delete partition noerr)))) for /f "tokens=1,3" %%a in (diskpartLog.txt) do if %%a == 分区 (if %%b==扩展的 (echo>>diskpart2.script select partition=0 echo>>diskpart2.script delete partition noerr)) echo>>diskpart2.script select partition=1 echo>>diskpart2.script extend noerr echo>>diskpart2.script shrink desired=8000 noerr echo>>diskpart2.script create partition primary noerr echo>>diskpart2.script format fs=ntfs label="D" quick noerr echo>>diskpart2.script assign letter=d noerr echo>>diskpart2.script Exit diskpart <diskpart2.script >>diskpartLog.txt del /f /q *.script :ftp rem:1.先D盘创建一个目录用于保存gho文件,WinPE文件,Log文件 rem:2.通过FTP获取文件 if not exist D:\autoInstallSys\sysISO (mkdir D:\autoInstallSys\sysISO) if not exist D:\autoInstallSys\WinPE (mkdir D:\autoInstallSys\WinPE) if not exist D:\autoInstallSys\Logs (mkdir D:\autoInstallSys\Logs) xcopy C:\autoInstallSys\diskpartLog.txt D:\autoInstallSys\Logs /q /y for /f "tokens=15" %%a in ('ipconfig ^| findstr /i .254') do ( set ip=%%a echo>ftp.script open !ip:254=10!
::上面这部操作是获取文员电脑的IP地址并打开FTP
echo>>ftp.script test echo>>ftp.script test1 echo>>ftp.script binary echo>>ftp.script cd SystemISO echo>>ftp.script prompt off echo>>ftp.script lcd D:\autoInstallSys\sysISO echo>>ftp.script get sys.gho echo>>ftp.script lcd D:\autoInstallSys\WinPE echo>>ftp.script get Win10PE.wim echo>>ftp.script close echo>>ftp.script bye ftp -s:ftp.script > D:\autoInstallSys\Logs\ftpLog.txt del /f /q *.script) :sysInstall rem:先简单验证文件是否存在 if not exist D:\autoInstallSys\sysISO\sys.gho (Echo Not Find sys.gho! > D:\autoInstallSys\Logs\sysInstallLog.txt&goto :eof) if not exist D:\autoInstallSys\WinPE\Win10PE.wim (Echo Not Find Win10PE.wim! >> D:\autoInstallSys\Logs\sysInstallLog.txt&goto :eof) xcopy D:\autoInstallSys\WinPE\Win10PE.wim C:\Boot /q /y bcdedit /create {ramdiskoptions} bcdedit /set {ramdiskoptions} ramdisksdidevice partition=C: bcdedit /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi for /f "tokens=2" %%a in ('bcdedit /create /d "Win10PE" /application osloader') do ( bcdedit /set %%a device ramdisk=[C:]\Boot\Win10PE.wim,{ramdiskoptions} bcdedit /set %%a path \windows\system32\winload.exe bcdedit /set %%a osdevice ramdisk=[C:]\Boot\Win10PE.wim,{ramdiskoptions} bcdedit /set %%a systemroot \windows bcdedit /set %%a winpe yes bcdedit /set %%a detecthal yes bcdedit /set %%a inherit {bootloadersettings} bcdedit /set %%a ems yes bcdedit /displayorder %%a /addfirst bcdedit /default %%a bcdedit /timeout 2) shutdown /r /f /t 1 goto :eof
附上几个相关链接:
GHOST使用以及常用命令详解