lblneva 发表于 2013-3-23 19:08

浅谈基于VHD方式在中小型企业内部署Windows8的一些思路与方法(4)-2

浅谈基于VHD方式在中小型企业内部署Windows8的一些思路与方法(4)-2
By lblneva
本篇接浅谈基于VHD方式在中小型企业内部署Windows 8的一些思路与方法(4)-1
地址:https://bbs.pcbeta.com/viewthread-1303359-1-1.html


2.   xpchangiu.bat
@echo off
:uni
cls
echo 请选择要进行的工作
echo #####################################################
echo 安装Windows 8请按 1
echo 卸载Windows 8请按 2
echo #####################################################
set unisos=
set /p unisos=请输入对应数字选择您的操作:
echo 您的输入的是:%unisos%,
set /p chkunisos=如果输入错误请按N,确认输入没错请按y,:
if "%chkunisos%"=="n" goto uni
if "%chkunisos%"=="N" goto uni
if "%chkunisos%"=="y" goto next2
if "%chkunisos%"=="Y" goto next2
echo 您输入有误,将返回重新输入
pause
goto uni

:next2
if "%unisos%"=="1" goto instll
if "%unisos%"=="2" goto uninstall
echo 您输入有误,将返回重新输入
pause
goto uni

:instll
echo open 192.168.1.2> %temp%\XPinstll.txt
echo win8>> %temp%\XPinstll.txt
echo 123456>> %temp%\XPinstll.txt
echo lcd %temp%>> %temp%\XPinstll.txt
echo get XPinstll.bat>> %temp%\XPinstll.txt
echo bye>> %temp%\XPinstll.txt
echo 下载工具中。
ftp -s:%temp%\XPinstll.txt 1>nul
del /q %temp%\XPinstll.txt
call %temp%\XPinstll.bat
del /q %temp%\XPinstll.bat
exit

:uninstall
echo open 192.168.1.2> %temp%\XPuninstall.txt
echo win8>> %temp%\XPuninstall.txt
echo 123456>> %temp%\XPuninstall.txt
echo lcd %temp%>> %temp%\XPuninstall.txt
echo get XPuninstall.bat>> %temp%\XPuninstall.txt
echo bye>> %temp%\XPuninstall.txt
echo 下载工具中。
ftp -s:%temp%\XPuninstall.txt 1>nul
del /q %temp%\XPuninstall.txt
call %temp%\XPuninstall.bat
del /q %temp%\XPuninstall.bat
exit

3.   XPinstll.bat
@echo off
set _pf=_pf
dir /a a:\ntldr 1>nul 2>nul && set _pf=a
dir /a b:\ntldr 1>nul 2>nul && set _pf=b
dir /a c:\ntldr 1>nul 2>nul && set _pf=c
dir /a d:\ntldr 1>nul 2>nul && set _pf=d
dir /a e:\ntldr 1>nul 2>nul && set _pf=e
dir /a f:\ntldr 1>nul 2>nul && set _pf=f
dir /a g:\ntldr 1>nul 2>nul && set _pf=g
dir /a h:\ntldr 1>nul 2>nul && set _pf=h
dir /a i:\ntldr 1>nul 2>nul && set _pf=i
dir /a j:\ntldr 1>nul 2>nul && set _pf=i
dir /a k:\ntldr 1>nul 2>nul && set _pf=i
dir /a l:\ntldr 1>nul 2>nul && set _pf=i
dir /a m:\ntldr 1>nul 2>nul && set _pf=i
dir /a n:\ntldr 1>nul 2>nul && set _pf=i

If %_pf%==_pf goto assign
If not %_pf%==_pf goto updatent60

:assign
echo 盘符获取失败,请联系管理员
pause
goto exit

:updatent60
cls
echo 请打开计算机,确认要下载Win8的分区可用空间大于16G。
set vhdstore=
set /p vhdstore=请输入要下载到那个盘(如C盘请输入C。):
echo 您输入的字符串是:%vhdstore%,
set /p chkvhdstore=如果输入错误请按N,确认输入没错请按y,:
if "%chkvhdstore%"=="n" goto ftp
if "%chkvhdstore%"=="N" goto ftp
mkdir "%vhdstore%:\Windows 8 VHD"
goto ftp1

:ftp1
echo open 192.168.1.2> %temp%\ftptemp1.txt
echo win8>> %temp%\ftptemp1.txt
echo 123456>> %temp%\ftptemp1.txt
echo lcd %temp%>> %temp%\ftptemp1.txt
echo get 7za.exe>> %temp%\ftptemp1.txt
echo get bcd.7z>> %temp%\ftptemp1.txt
echo bye>> %temp%\ftptemp1.txt
echo 下载工具中。
ftp -s:%temp%\ftptemp1.txt 1>nul
echo 下载完毕。开始准备释放文件到启动盘
del %temp%\ftptemp1.txt
%temp%\7za.exe x %temp%\bcd.7z -y -o%_pf%:\ 1>nul 2>nul
del /q %temp%\7za.exe 1>nul 2>nul
del /q %temp%\bcd.7z 1>nul 2>nul
echo 释放完成
goto bcd

:bcd
%_pf%:\vhdtoolsx86\bootsect.exe /nt60 all /mbr

FOR /F "tokens=3 delims= " %%i in ('%_pf%:\vhdtoolsx86\bcdedit.exe /create /d "Windows 8" /application osloader') do set _win8id=%%i

%_pf%:\vhdtoolsx86\bcdedit.exe /set %_win8id% device vhd="[%vhdstore%:]\Windows 8 VHD\win8ent.vhd"
%_pf%:\vhdtoolsx86\bcdedit.exe /set %_win8id% osdevice vhd="[%vhdstore%:]\Windows 8 VHD\win8ent.vhd"
%_pf%:\vhdtoolsx86\bcdedit.exe /set %_win8id% path \Windows\system32\winload.exe
%_pf%:\vhdtoolsx86\bcdedit.exe /set %_win8id% systemroot \windows
%_pf%:\vhdtoolsx86\bcdedit.exe /set %_win8id% locale zh-cn
%_pf%:\vhdtoolsx86\bcdedit.exe /displayorder %_win8id% /addlast

%_pf%:\vhdtoolsx86\bcdedit.exe /create {ntldr} /d "Windows XP pro"
%_pf%:\vhdtoolsx86\bcdedit.exe /set {ntldr} device partition=%_pf%:
%_pf%:\vhdtoolsx86\bcdedit.exe /set {ntldr} path \ntldr
%_pf%:\vhdtoolsx86\bcdedit.exe /displayorder {ntldr} /addlast

%_pf%:\vhdtoolsx86\bcdedit.exe /set {bootmgr} default %_win8id%
%_pf%:\vhdtoolsx86\bcdedit.exe /timeout 30
rd /s /q %_pf%:\vhdtoolsx86
goto ftpvhd

:ftpvhd
echo open 192.168.1.2> %temp%\ftpvhd.txt
echo win8>> %temp%\ftpvhd.txt
echo 123456>> %temp%\ftpvhd.txt
echo lcd "%vhdstore%:\Windows 8 VHD">> %temp%\ftpvhd.txt
echo get win8ent.vhd>> %temp%\ftpvhd.txt
echo bye>> %temp%\ftpvhd.txt
echo 下载Win8时间较长,大概需要30分的时间。
ftp -s:%temp%\ftpvhd.txt 1>nul
del %temp%\ftpvhd.txt
echo 下载完毕。现在可以重启进入Windows 8
pause
exit



4.   XPuninstall.bat
@echo off
set _vhdfile=vhdfile
dir /a "a:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=a
dir /a "b:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=b
dir /a "c:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=c
dir /a "d:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=d
dir /a "e:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=e
dir /a "f:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=f
dir /a "g:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=g
dir /a "h:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=h
dir /a "i:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=i

If %_vhdfile%==vhdfile goto quit
If not %_vhdfile%==vhdfile goto next3
exit

:next3
echo open 192.168.1.2> %temp%\delvhdwin8.txt
echo win8>> %temp%\delvhdwin8.txt
echo 123456>> %temp%\delvhdwin8.txt
echo lcd %temp%>> %temp%\delvhdwin8.txt
echo get icacls.exe>> %temp%\delvhdwin8.txt
echo get takeown.exe>> %temp%\delvhdwin8.txt
echo get bootsect.exe>> %temp%\delvhdwin8.txt
echo bye>> %temp%\delvhdwin8.txt
echo 下载工具中。
ftp -s:%temp%\delvhdwin8.txt 1>nul
del /q %temp%\delvhdwin8.txt
echo 工具下载完毕。开始删除Windows 8作业

%temp%\bootsect.exe /nt52 all /mbr
dir /a a:\bootmgr 1>nul 2>nul && set _bootpf=a
dir /a b:\bootmgr 1>nul 2>nul && set _bootpf=b
dir /a c:\bootmgr 1>nul 2>nul && set _bootpf=c
dir /a d:\bootmgr 1>nul 2>nul && set _bootpf=d
dir /a e:\bootmgr 1>nul 2>nul && set _bootpf=e
dir /a f:\bootmgr 1>nul 2>nul && set _bootpf=f
dir /a g:\bootmgr 1>nul 2>nul && set _bootpf=g
dir /a h:\bootmgr 1>nul 2>nul && set _bootpf=h
dir /a i:\bootmgr 1>nul 2>nul && set _bootpf=i
%temp%\takeown.exe /F %_bootpf%:\bootmgr /A
%temp%\takeown.exe /F %_bootpf%:\boot /R /A
%temp%\takeown.exe /F %_bootpf%:\BOOTNXT /A
%temp%\takeown.exe /F %_bootpf%:\BOOTSECT.BAK /A
%temp%\icacls.exe %_bootpf%:\bootmgr /grant Administrators:F
%temp%\icacls.exe %_bootpf%:\boot /grant Administrators:F /T
%temp%\icacls.exe %_bootpf%:\BOOTNXT /grant Administrators:F
%temp%\icacls.exe %_bootpf%:\BOOTSECT.BAK /grant Administrators:F

del %temp%\icacls.exe /a /f /q
del %temp%\takeown.exe /a /f /q
del %temp%\bootsect.exe /a /f /q
del %_bootpf%:\bootmgr /a /f /q
del %_bootpf%:\BOOTNXT /a /f /q
del %_bootpf%:\BOOTSECT.BAK /a /f /q
rd %_bootpf%:\boot /s /q
rd "%_vhdfile%:\Windows 8 VHD" /s /q

cls
echo Windows 8卸载完成
pause
exit

:quit
echo 您未通过本工具安装Windows 8.故无法卸载Windows 8
pause
exit


7.4.2 批处理的演示

演示效果:


1.   可以看到,笔者的虚拟机除Windows XP。并无其他系统

2.   虚拟机的网络配置

3.   运行index.bat。按照设置出现傻瓜化提示。由于只是演示,故无太多细心考虑

4.   傻瓜化选择继续中

5.   输入存放VHD文件的分区盘符

6.   至此,所有输入完毕。批处理进入自动化处理中

7.   开始自动连接FTP服务器下载VHD文件

8.   可以看到要下载的VHD文件有15G。7.1M/S下载速度。估计要下载30到50分。
笔者这次偷懒用了写思路1、2、3里的以创建好的VHD文件,固定大小,未作应答封装等。实际使用过程中可以修改要部署的系统,创建自应答、集成公司内机器的驱动及软件后重新封装。VHD的类型可以选择为扩展+差分。来帮助减少工作量。

由于笔者疏忽,下载完毕后续操作忘掉截图。幸好以上演示过程已录像。还有,笔者今天上传至服务器批处理有2处小错误:
1.   安装批处理删除临时文件名多.txt2.   卸载批处理漏掉删除vhd文件命令
本篇提供的批处理以修复以上问题。

安装演示视频共2段。中间跳过了下载时间

第一段:http://v.youku.com/v_show/id_XNTMxMTg4OTAw.html
第二段:http://v.youku.com/v_show/id_XNTMxMjI4ODky.html(忘掉写标题了)

卸载批处理演示视频共一段:
http://v.youku.com/v_show/id_XNTMxMjMzMzgw.html

至此,笔者对自己一些主要针对IT部门非正规化管理、公司内(非)IT专业人士、傻瓜化、自己DIY部署基于VHD文件启动的windows8的想法做了一些探讨。
接下来,笔者将会对原生系统是NT6.0启动的Windows 7与Windows XP + Windows 7双系统,使用批处理员工DIY部署基于VHD文件启动的Windows 8进行演示。希望阅读本篇文章并感觉有所启发的读者期待笔者的下一遍文章:浅谈基于VHD方式在中小型企业内部署Windows 8的一些思路与方法(5)

看了下word的字数统计,本篇很可能会超过远景的单贴限制。如果超过去后,本文将会以4-1,4-2的形式多帖发布。由于审核问题,显示时间可能会有延后。请读者见谅。



Lblneva2013.03.23

devilma 发表于 2013-3-24 13:33

写得太好了,我挺你

xiongdeyuan 发表于 2015-2-8 10:41

写得太好了,我挺你
页: [1]
查看完整版本: 浅谈基于VHD方式在中小型企业内部署Windows8的一些思路与方法(4)-2