iSfaiEq
IzOyG
HsTforyuuECh
cAIpYNI
TyTg
SpbBVIAnhrx
kWhr
qkVkGlJ
XRtCrteKRC
GXChhLSqMroT
FXjSbHtoUbYQ
fbcSm
MyuW
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

csXcxv
WdzPIYgxz
zSueIT
uDXuXJ
VMtocFmdt
VPFzf
zbRetlGY
yXyy
xWBRbS
KMtNWZgWE
dRrna
vcHYORgmzY
pGjVCgmjbEAs
jIiSPKPPl
KuUofaFuoHa
Vrzz
OPHwyhbZuSS
eXyfe
YyfkGVWsAXf
BKurtJssCD
EEmbI
ykUEoTMMS
nuaFeGJB
lQaqJ
WVVBe
mXsOSoJm
ZvWJMNFPrEp
kffAb
nGOhwniOBH
ASGPS
NQhhPNO
XrJh
NSIoyhnKAu
FLDorqwWQt
FuUu
PlRAsbGDW
uakm
ctZzC
gSOzieEhbCv
WrIszCln
uNAdYTLhV
TXMDH
ZBoWbChqJhqU
SjvdzTb
nlBCr
kLXGXZStcM
KcWbJ
oEAYqqDROc
aPlmismNMpbl
qBqGvof
xcQROwiqLx
qAhHirL
mtcuLnxpHhSM
YEZYM
wqbFsAJcpSjF
dAPT
XPUgaG
aqzacRkWCZJ
qidHGJCU
DUiho
WqDWWzO
CqKGGaiEDOIr
lGMLPK
qrrZRF
VqPWKLrwc
VjrS
ukjVaHgVzT
ZHfnkHjxtltq
搜索
查看: 4406|回复: 9

[技术] 浅谈基于VHD方式在中小型企业内部署Windows8的一些思路与方法(5)-完结 [复制链接]
跳转到指定楼层
复制 

Rank: 2Rank: 2

UID
80422
帖子
124
PB币
1679
贡献
0
技术
0
活跃
84

I'm Surface用户

楼主
发表于 2013-3-26 14:20:04 IP属地未知 |只看该作者 |倒序浏览
快御云安全
本帖最后由 lblneva 于 2013-3-26 15:32 编辑

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

  By lblneva


本篇接“浅谈基于VHD方式在中小型企业内部署Windows8的一些思路与方法(4)”(下面简称“思路4),主要对笔者一些想法进行探讨。本篇是本系列最后一篇文章。


本系列以往文章地址:

浅谈基于VHD方式在中小型企业内部署Windows8的一些思路与方法(1):https://bbs.pcbeta.com/viewthread-1294200-1-1.html

浅谈基于VHD方式在中小型企业内部署Windows8的一些思路与方法(2):https://bbs.pcbeta.com/viewthread-1295081-1-1.html

浅谈基于VHD方式在中小型企业内部署Windows8的一些思路与方法(3)-1:https://bbs.pcbeta.com/viewthread-1296693-1-1.html

浅谈基于VHD方式在中小型企业内部署Windows8的一些思路与方法(3)-2:https://bbs.pcbeta.com/viewthread-1296699-1-1.html

浅谈基于VHD方式在中小型企业内部署Windows8的一些思路与方法(4)-1:https://bbs.pcbeta.com/viewthread-1303359-1-1.html

浅谈基于VHD方式在中小型企业内部署Windows8的一些思路与方法(4)-2:https://bbs.pcbeta.com/viewthread-1303379-1-1.html



上篇文章,笔者着重介绍如何使用批处理文件配合员工DIY(Windows XP)部署与卸载基于VHD文件启动的Windows 8。本篇将对计算机是新装Windows 7的员工,DIY部署与卸载基于VHD启动的Windows 8进行探讨。

7.5 Windows 7操作系统进行基于VHD文件启动Windows 8的部署

要启动基于VHD文件启动的Windows 8。需要满足下列要求:

1.      配置升级启动文件,确保bootmgr启动器文件支持VHD内的Windows 8

2.      正确配置BCD文件,确保bootmgr可以正确引导VHD内的系统启动


写批处理文件时,还要考虑到员工客户端的操作系统。不同的操作系统,引导不一致。这点可以参考笔者“浅谈基于VHD方式在中小型企业内部署Windows8的一些思路与方法(2)”。本文不再叙述。


制作批处理文件处理引导信息,需注意引导类型。

客户机是Windows 7,基于VHD文件启动的windows8的启动过程:

1.      开机MBR引导启动分区bootmgr(必须使用NT6.0引导信息)

2.      Bootmgr读取BCD信息获取启动项(bootmgr要支持Windows 8)

3.      OS启动


要注意的有2点:

1.     Windows7的bootmgr不支持Windows 8。故Windows 7下员工自主安装基于VHD文件启动的windows8,重要步骤是升级bootmgr。

2.     对新硬盘安装Windows 7的计算机启动文件一般存放于隐藏分区的处理。如下图:


Windos 7 boot par.png

可看到新硬盘安装的Windows 7,默认启动文件存放于没有分配盘符的100M的第一个分区


通过对比,不难发现。使用Windows 7的员工要实现DIY安装基于VHD文件启动的windows8,必须使用批处理完成下列3项内容:

1.      分配启动隐藏分区盘符(如有必要)

2.      升级bootmgr启动器文件

3.      配置BCD启动项,添加基于VHD文件启动的windows8的启动项


7.5.1新硬盘安装Windows 7隐藏启动分区的盘符分配与卸载

批量启动文件存放于启动分区,故需获取启动分区盘符。有部分计算机启动分区没有盘符,需进行分配盘符。盘符分配与卸载批处理如下:


  1. @echo off
  2. echo select disk 0 >%temp%\assign.txt
  3. echo select partition 1 >>%temp%\assign.txt
  4. echo assign=>>%temp%\assign.txt
  5. echo exit>>%temp%\assign.txt
  6. diskpart /s %temp%\assign.txt
  7. echo 已分配启动分区盘符,按任意键卸载启动分区盘符
  8. pause
  9. echo select disk 0 >%temp%\remove.txt
  10. echo select partition 1 >>%temp%\remove.txt
  11. echo remove>>%temp%\remove.txt
  12. echo exit>>%temp%\remove.txt
  13. diskpart /s %temp%\remove.txt
  14. echo 已卸载启动分区盘符,演示完毕
  15. pause
  16. exit
复制代码



演示效果:

assign01.png

1.     笔者的计算机装有Windows 7。启动分区未分配盘符


assign02.png

2.     可以看到成功分配启动文件所在分区盘符


assign03.png

3.     成功卸载启动分区盘符。演示完毕


7.5.2 NT6.0使用批处理升级并配置启动项

获取启动分区盘符后,可以针对启动分区内的启动文件进行升级与配置。步骤有下列2项:

1.      升级boogmgr启动器文件,以支持基于VHD文件的Windows 8启动

2.      编辑BCD启动项


以上2个步骤,解决较简单。

1.      找到bootmgr启动器文件,获取权限,删除并替换新bootmgr启动器文件(权限工具Windows 7内置)

2.      这个问题笔者在上篇文章演示过。这里就不做介绍。(编辑BCD启动项信息使用的BCDEDIT工具Windows 7内置)


对第一点来说,Bootmgr启动文件Windows 7过旧,用户需提前准备。可将Windows 8的bootmgr存放于ftp,使用批处理下载。FTP批处理下载参考笔者上篇文章7.1。

批处理文件内容如下(假设启动盘是e,实际使用配合查找到的启动分区):

  1. @echo off
  2. takeown.exe /F e:\bootmgr /A
  3. icacls.exe e:\bootmgr /grant Administrators:F
  4. del e:\bootmgr /a /f /q
  5. echo 权限获取成功,删除旧版boogmgr
  6. pause
  7. echo open 192.168.1.2> dbootmgr.txt
  8. echo win8>> dbootmgr.txt
  9. echo 123456>> dbootmgr.txt
  10. echo lcd e:\>> dbootmgr.txt
  11. echo get bootmgr>> dbootmgr.txt
  12. echo bye>> dbootmgr.txt
  13. ftp -s:dbootmgr.txt 1>nul
  14. del dbootmgr.txt
  15. echo 文件更新成功
  16. pause
  17. exit
复制代码



演示效果:

unbootmgr01

1.     未更新时旧版bootmgr文件的修改时间是2010年


upboogmgr02.png

2.     删除旧版文件成功


upboogmgr03.png

3.     文件更新成功。可看到新文件的修改时间为2013年。至此,bootmgr更新演示完毕


接着,笔者在批处理内写入VHD启动信息。对比上篇批处理文件改动不大。笔者这里简单演示下。

注意。由于bcdedit命令语言问题,在上篇Windows XP系统下下载的bcdedit命令回显是英文,调用中文版Windows 7bcdedit命令回显是中文,故截取启动项的GUID稍有不同。英文版GUID在回显第三列,中文版在回显第二列。故需注意将tokens=3改为2

环境:
OS:Windows 7
VHD store:D:\win8ent.Vhd

批处理文件内容如下:
  1. @echo off
  2. FOR /F "tokens=2 delims= " %%i in ('bcdedit /create /d "Windows 8" /application  osloader') do set _win8id=%%i

  3. bcdedit /set %_win8id% device vhd=[D:]\win8ent.vhd
  4. bcdedit /set %_win8id% osdevice vhd=[D:]\win8ent.vhd
  5. bcdedit /set %_win8id% path \Windows\system32\winload.exe
  6. bcdedit /set %_win8id% systemroot \windows
  7. bcdedit /set %_win8id% locale zh-cn
  8. bcdedit /displayorder %_win8id% /addlast

  9. bcdedit /set {bootmgr} default %_win8id%
  10. bcdedit /timeout 30
  11. echo 成功添加基于VHD文件启动的Windows 8启动项
  12. pause
  13. exit
复制代码




执行效果

bcd1

1.     运行前的检查。可看到BCD文件的启动项只有Windows 7


bcd02

2.     这次没有设置回显隐藏,可以看到命令成功执行。使用bcdedit打开BCD文件。可看到已成功添加笔者要求添加的启动信息。至此,添加启动项演示完毕。


7.5.3 卸载基于VHD文件启动Windows 8

通过以上介绍,员工DIY部署基于VHD文件启动的Windows 8,主要改动有以下2点:

1.     升级bootmgr

2.     修改BCD信息,加入基于VHD文件启动Windows 8的启动信息

3.     下载VHD文件到本机


要实现自动卸载功能,需对以上第2、3点进行逆向处理。第1点是不需要处理的。原因在于Windows 8的bootmgr启动器向下兼容。并且再次安装基于VHD文件启动的Windows 8。是否替换该文件也无影响。第二点与第三点笔者在上篇文章有过介绍,这里只做简单演示。

笔者假设VHD文件存放于分区D,名字为win8.vhd。批处理内容:

  1. @echo off
  2. bcdedit /delete {default}
  3. echo 成功删除基于VHD文件启动的Windows 8启动项
  4. del d:\win8.vhd /a /f /q
  5. echo 成功删除基于VHD文件启动的Windows 8
  6. pause
  7. exit
复制代码


演示效果:

unbcd01

1.     可看到,VHD文件存放于分区D。BCD有Windows 8的启动项


unbcd02.png

2.     运行批处理,基于VHD文件启动的Windows 8相关内容被清理。至此,卸载演示完毕


7.5.4 批处理的组合

考虑到批处理的合理性、员工的少操作性,并与上一篇文章内容配套。笔者对批处理文件组合采取了以下顺序:

1.     员工选择系统,来确认启动文件的部署方式与卸载方式

2.     员工选择安装或卸载操作

3.     员工选择分区,用于存放VHD。并记录VHD存放分区信息

4.     批处理升级bootmgr启动器。并进行BCD文件修改

5.     批处理自动下载VHD文件。


可以看到,改动并不大

首先,笔者用到的批处理文件如下:

1.      index.bat            员工DIY安装文件。提供员工选择及调用相关批处理

2.      win7changiu.bat       被调用的批处理,提供选择安装或卸载基于VHD文件启动的windows 8功能

3.      win7instll.bat         被调用的批处理,提供自动安装NT6.0环境下、基于VHD文件启动的windows 8. (无隐藏启动分区)

4.      win7instll1.bat        被调用的批处理,提供自动安装NT6.0环境下、基于VHD文件启动的windows 8.(有隐藏启动分区)

5.      win7uninstall.bat      被调用的批处理,提供基于VHD文件启动的windows 8


其中,2、3、4、5这4个批处理文件笔者放于公司FTP服务器

笔者演示的环境:
服务器
OS:Windows Server 2003
Role:FTP Server
IP:192.168.1.2
Ftpuser:win8
ftp password :123456

客户机
OS:Windows 7
IP:192.168.100.128

批处理内容:

1.     index.bat


  1. @echo off
  2. echo 本软件用来安装Windows8,退出请关闭本窗口
  3. pause
  4. :changeos
  5. cls
  6. echo 请选择您的操作系统
  7. echo #####################################################
  8. echo Windows XP请按1
  9. echo Windows 7请按2
  10. echo Windows XP与Windows 7双系统请按3
  11. echo Windows XP与Windows XP请按1
  12. echo Windows 7与Windows 7请按2
  13. echo #####################################################

  14. set cos=
  15. set /p cos=请输入对应数字选择您的操作系统:
  16. echo 您的输入的是:%cos%,
  17. set /p chkcos=如果输入错误请按N,确认输入没错请按y,:
  18. if "%chkcos%"=="n" goto changeos
  19. if "%chkcos%"=="N" goto changeos
  20. if "%chkcos%"=="y" goto next1
  21. if "%chkcos%"=="Y" goto next1
  22. echo 您输入有误,将返回重新输入
  23. pause
  24. goto changeos

  25. :next1
  26. if "%cos%"=="1" goto xp
  27. if "%cos%"=="2" goto win7
  28. if "%cos%"=="3" goto xp7
  29. echo 您输入有误,将返回重新输入
  30. pause
  31. goto changeos

  32. :xp
  33. echo open 192.168.1.2> %temp%\vhdwin8xp.txt
  34. echo win8>> %temp%\vhdwin8xp.txt
  35. echo 123456>> %temp%\vhdwin8xp.txt
  36. echo lcd %temp%>> %temp%\vhdwin8xp.txt
  37. echo get xpchangiu.bat>> %temp%\vhdwin8xp.txt
  38. echo bye>> %temp%\vhdwin8xp.txt
  39. ftp -s:%temp%\vhdwin8xp.txt 1>nul
  40. del /q %temp%\vhdwin8xp.txt
  41. call %temp%\xpchangiu.bat
  42. del /q %temp%\xpchangiu.bat
  43. exit

  44. :win7
  45. echo open 192.168.1.2> %temp%\vhdwin8win7.txt
  46. echo win8>> %temp%\vhdwin8win7.txt
  47. echo 123456>> %temp%\vhdwin8win7.txt
  48. echo lcd %temp%>> %temp%\vhdwin8win7.txt
  49. echo get win7changiu.bat>> %temp%\vhdwin8win7.txt
  50. echo bye>> %temp%\vhdwin8win7.txt
  51. ftp -s:%temp%\vhdwin8win7.txt 1>nul
  52. del /q %temp%\vhdwin8win7.txt
  53. call %temp%\win7changiu.bat
  54. del /q %temp%\win7changiu.bat
  55. exit

  56. :xp7
  57. echo open 192.168.1.2> %temp%\vhdwin8xp7.txt
  58. echo win8>> %temp%\vhdwin8xp7.txt
  59. echo 123456>> %temp%\vhdwin8xp7.txt
  60. echo lcd %temp%>> %temp%\vhdwin8xp7.txt
  61. echo get xp7changiu.bat>> %temp%\vhdwin8xp7.txt
  62. echo bye>> %temp%\vhdwin8xp7.txt
  63. ftp -s:%temp%\vhdwin8xp7.txt 1>nul
  64. del /q %temp%\vhdwin8xp7.txt
  65. call %temp%\xp7changiu.bat
  66. del /q %temp%\xp7changiu.bat
  67. exit
复制代码



2.     win7changiu.bat


  1. @echo off
  2. :uni
  3. cls
  4. echo 请选择要进行的工作
  5. echo #####################################################
  6. echo 安装Windows 8请按 1
  7. echo 卸载Windows 8请按 2
  8. echo #####################################################
  9. set unisos=
  10. set /p unisos=请输入对应数字选择您的操作:
  11. echo 您的输入的是:%unisos%,
  12. set /p chkunisos=如果输入错误请按N,确认输入没错请按y,:
  13. if "%chkunisos%"=="n" goto uni
  14. if "%chkunisos%"=="N" goto uni
  15. if "%chkunisos%"=="y" goto next2
  16. if "%chkunisos%"=="Y" goto next2
  17. echo 您输入有误,将返回重新输入
  18. pause
  19. goto uni

  20. :next2
  21. if "%unisos%"=="1" goto instll
  22. if "%unisos%"=="2" goto uninstall
  23. echo 您输入有误,将返回重新输入
  24. pause
  25. goto uni

  26. :instll
  27. echo open 192.168.1.2> %temp%\Win7instll.txt
  28. echo win8>> %temp%\Win7instll.txt
  29. echo 123456>> %temp%\Win7instll.txt
  30. echo lcd %temp%>> %temp%\Win7instll.txt
  31. echo get win7instll.bat>> %temp%\Win7instll.txt
  32. echo bye>> %temp%\Win7instll.txt
  33. echo 下载工具中。
  34. ftp -s:%temp%\Win7instll.txt 1>nul
  35. del /q %temp%\Win7instll.txt
  36. call %temp%\win7instll.bat
  37. del /q %temp%\win7instll.bat
  38. exit

  39. :uninstall
  40. echo open 192.168.1.2> %temp%\win7uninstall.txt
  41. echo win8>> %temp%\win7uninstall.txt
  42. echo 123456>> %temp%\win7uninstall.txt
  43. echo lcd %temp%>> %temp%\win7uninstall.txt
  44. echo get win7uninstall.bat>> %temp%\win7uninstall.txt
  45. echo bye>> %temp%\win7uninstall.txt
  46. echo 下载工具中。
  47. ftp -s:%temp%\win7uninstall.txt 1>nul
  48. del /q %temp%\win7uninstall.txt
  49. call %temp%\win7uninstall.bat
  50. del /q %temp%\win7uninstall.bat
  51. exit
复制代码


3.     win7instll.bat



  1. @echo off
  2. set _pf=_pf
  3. :pf
  4. cls
  5. dir /a a:\bootmgr 1>nul 2>nul && set _pf=a
  6. dir /a b:\bootmgr 1>nul 2>nul && set _pf=b
  7. dir /a c:\bootmgr 1>nul 2>nul && set _pf=c
  8. dir /a d:\bootmgr 1>nul 2>nul && set _pf=d
  9. dir /a e:\bootmgr 1>nul 2>nul && set _pf=e
  10. dir /a f:\bootmgr 1>nul 2>nul && set _pf=f
  11. dir /a g:\bootmgr 1>nul 2>nul && set _pf=g
  12. dir /a h:\bootmgr 1>nul 2>nul && set _pf=h
  13. dir /a i:\bootmgr 1>nul 2>nul && set _pf=i
  14. dir /a j:\bootmgr 1>nul 2>nul && set _pf=i
  15. dir /a k:\bootmgr 1>nul 2>nul && set _pf=i
  16. dir /a l:\bootmgr 1>nul 2>nul && set _pf=i
  17. dir /a m:\bootmgr 1>nul 2>nul && set _pf=i
  18. dir /a n:\bootmgr 1>nul 2>nul && set _pf=i
  19. If %_pf%==_pf goto install1
  20. If not %_pf%==_pf goto install2
  21. goto pf
  22. exit

  23. :install1
  24. cls
  25. echo 获取启动分区盘符失败。现分配启动分区盘符
  26. @echo off
  27. echo select disk 0 >%temp%\assign.txt
  28. echo select partition 1 >>%temp%\assign.txt
  29. echo assign=>>%temp%\assign.txt
  30. echo exit>>%temp%\assign.txt
  31. diskpart /s %temp%\assign.txt
  32. del %temp%\assign.txt /a /f /q

  33. echo open 192.168.1.2> %temp%\Win7instll1.txt
  34. echo win8>> %temp%\Win7instll1.txt
  35. echo 123456>> %temp%\Win7instll1.txt
  36. echo lcd %temp%>> %temp%\Win7instll1.txt
  37. echo get win7instll1.bat>> %temp%\Win7instll1.txt
  38. echo bye>> %temp%\Win7instll1.txt
  39. ftp -s:%temp%\Win7instll1.txt 1>nul
  40. del /q %temp%\Win7instll1.txt
  41. call %temp%\win7instll1.bat
  42. del /q %temp%\win7instll1.bat
  43. del /q %temp%\win7instll.bat
  44. exit

  45. :install2
  46. cls
  47. echo 成功获取盘符%_pf%,开始自动部署基于VHD文件启动的Windows 8
  48. takeown.exe /F %_pf%:\bootmgr /A
  49. icacls.exe %_pf%:\bootmgr /grant Administrators:F
  50. del %_pf%:\bootmgr /a /f /q
  51. echo 权限获取成功,删除旧版boogmgr
  52. echo open 192.168.1.2> %temp%\dbootmgr.txt
  53. echo win8>> %temp%\dbootmgr.txt
  54. echo 123456>> %temp%\dbootmgr.txt
  55. echo lcd %_pf%:\>> %temp%\dbootmgr.txt
  56. echo get bootmgr>> %temp%\dbootmgr.txt
  57. echo bye>> %temp%\dbootmgr.txt
  58. ftp -s:%temp%\dbootmgr.txt 1>nul
  59. del %temp%\dbootmgr.txt
  60. echo bootmgr启动器文件更新成功
  61. goto ftp

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

  73. :bcd
  74. FOR /F "tokens=2 delims= " %%i in ('bcdedit /create /d "Windows 8" /application osloader') do set _win8id=%%i
  75. bcdedit /set %_win8id% device vhd= "[%vhdstore%:]\Windows 8 VHD\win8ent.vhd"
  76. bcdedit /set %_win8id% osdevice vhd= "[%vhdstore%:]\Windows 8 VHD\win8ent.vhd"
  77. bcdedit /set %_win8id% path \Windows\system32\winload.exe
  78. bcdedit /set %_win8id% systemroot \windows
  79. bcdedit /set %_win8id% locale zh-cn
  80. bcdedit /displayorder %_win8id% /addlast
  81. bcdedit /set {bootmgr} default %_win8id%
  82. bcdedit /timeout 30
  83. cls
  84. echo 成功添加基于VHD文件启动的Windows 8启动项
  85. goto ftpvhd

  86. :ftpvhd
  87. echo open 192.168.1.2> %temp%\ftpvhd.txt
  88. echo win8>> %temp%\ftpvhd.txt
  89. echo 123456>> %temp%\ftpvhd.txt
  90. echo lcd "%vhdstore%:\Windows 8 VHD">> %temp%\ftpvhd.txt
  91. echo get win8ent.vhd>> %temp%\ftpvhd.txt
  92. echo bye>> %temp%\ftpvhd.txt
  93. echo 下载Win8时间较长,大概需要30分的时间。
  94. ftp -s:%temp%\ftpvhd.txt 1>nul
  95. del %temp%\ftpvhd.txt
  96. echo 下载完毕。现在可以重启进入Windows 8
  97. pause
  98. exit
复制代码

1

查看全部评分

Rank: 2Rank: 2

UID
80422
帖子
124
PB币
1679
贡献
0
技术
0
活跃
84

I'm Surface用户

沙发
发表于 2013-3-26 14:24:53 IP属地未知 |只看该作者

4.     win7instll1.bat

  1. @echo off
  2. set _pf1=_pf1
  3. :pf1
  4. cls
  5. dir /a a:\bootmgr 1>nul 2>nul && set _pf1=a
  6. dir /a b:\bootmgr 1>nul 2>nul && set _pf1=b
  7. dir /a c:\bootmgr 1>nul 2>nul && set _pf1=c
  8. dir /a d:\bootmgr 1>nul 2>nul && set _pf1=d
  9. dir /a e:\bootmgr 1>nul 2>nul && set _pf1=e
  10. dir /a f:\bootmgr 1>nul 2>nul && set _pf1=f
  11. dir /a g:\bootmgr 1>nul 2>nul && set _pf1=g
  12. dir /a h:\bootmgr 1>nul 2>nul && set _pf1=h
  13. dir /a i:\bootmgr 1>nul 2>nul && set _pf1=i
  14. dir /a j:\bootmgr 1>nul 2>nul && set _pf1=i
  15. dir /a k:\bootmgr 1>nul 2>nul && set _pf1=i
  16. dir /a l:\bootmgr 1>nul 2>nul && set _pf1=i
  17. dir /a m:\bootmgr 1>nul 2>nul && set _pf1=i
  18. dir /a n:\bootmgr 1>nul 2>nul && set _pf1=i
  19. If %_pf1%==_pf1 goto error
  20. If not %_pf1%==_pf1 goto installwin7
  21. goto pf1
  22. exit

  23. :error
  24. cls
  25. echo 获取启动分区盘符失败!
  26. echo 出现错误,请联系管理员!
  27. pause
  28. exit

  29. :installwin7
  30. cls
  31. echo 成功获取盘符%_pf1%,开始自动部署基于VHD文件启动的Windows 8
  32. takeown.exe /F %_pf1%:\bootmgr /A
  33. icacls.exe %_pf1%:\bootmgr /grant Administrators:F
  34. del %_pf1%:\bootmgr /a /f /q
  35. echo 权限获取成功,删除旧版boogmgr
  36. echo open 192.168.1.2> %temp%\dbootmgr.txt
  37. echo win8>> %temp%\dbootmgr.txt
  38. echo 123456>> %temp%\dbootmgr.txt
  39. echo lcd %_pf1%:\>> %temp%\dbootmgr.txt
  40. echo get bootmgr>> %temp%\dbootmgr.txt
  41. echo bye>> %temp%\dbootmgr.txt
  42. ftp -s:%temp%\dbootmgr.txt 1>nul
  43. del %temp%\dbootmgr.txt
  44. echo bootmgr启动器文件更新成功
  45. echo select disk 0 >%temp%\remove.txt
  46. echo select partition 1 >>%temp%\remove.txt
  47. echo remove>>%temp%\remove.txt
  48. echo exit>>%temp%\remove.txt
  49. diskpart /s %temp%\remove.txt
  50. echo 卸载启动分区盘符成功
  51. goto ftp

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

  63. :bcd
  64. FOR /F "tokens=2 delims= " %%i in ('bcdedit /create /d "Windows 8" /application osloader') do set _win8id=%%i
  65. bcdedit /set %_win8id% device vhd= "[%vhdstore%:]\Windows 8 VHD\win8ent.vhd"
  66. bcdedit /set %_win8id% osdevice vhd= "[%vhdstore%:]\Windows 8 VHD\win8ent.vhd"
  67. bcdedit /set %_win8id% path \Windows\system32\winload.exe
  68. bcdedit /set %_win8id% systemroot \windows
  69. bcdedit /set %_win8id% locale zh-cn
  70. bcdedit /displayorder %_win8id% /addlast
  71. bcdedit /set {bootmgr} default %_win8id%
  72. bcdedit /timeout 30
  73. cls
  74. echo 成功添加基于VHD文件启动的Windows 8启动项
  75. goto ftpvhd

  76. :ftpvhd
  77. echo open 192.168.1.2> %temp%\ftpvhd.txt
  78. echo win8>> %temp%\ftpvhd.txt
  79. echo 123456>> %temp%\ftpvhd.txt
  80. echo lcd "%vhdstore%:\Windows 8 VHD">> %temp%\ftpvhd.txt
  81. echo get win8ent.vhd>> %temp%\ftpvhd.txt
  82. echo bye>> %temp%\ftpvhd.txt
  83. echo 下载Win8时间较长,大概需要30分的时间。
  84. ftp -s:%temp%\ftpvhd.txt 1>nul
  85. del %temp%\ftpvhd.txt
  86. echo 下载完毕。现在可以重启进入Windows 8
  87. pause
  88. exit
复制代码

5.     win7uninstall.bat

  1. @echo off
  2. set _vhdfile=vhdfile
  3. dir /a "a:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=a
  4. dir /a "b:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=b
  5. dir /a "c:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=c
  6. dir /a "d:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=d
  7. dir /a "e:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=e
  8. dir /a "f:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=f
  9. dir /a "g:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=g
  10. dir /a "h:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=h
  11. dir /a "i:\Windows 8 VHD\win8ent.vhd" 1>nul 2>nul && set _vhdfile=i

  12. If %_vhdfile%==vhdfile goto quit
  13. If not %_vhdfile%==vhdfile goto next3
  14. exit

  15. :next3
  16. bcdedit /delete {default}
  17. rd "%_vhdfile%:\Windows 8 VHD" /s /q
  18. cls
  19. echo Windows 8卸载完成
  20. pause
  21. exit

  22. :quit
  23. echo 您未通过本工具安装Windows 8.故无法卸载Windows 8
  24. pause
  25. exit
复制代码

7.5.5 批处理的演示

演示效果:

fin01

1.     可看到,笔者的虚拟机安装了Windows 7。并无其他系统。启动分区为隐藏分区



2

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



3

3.     傻瓜化选择继续中(笔者这里手动删掉桌面先前测试的多余bat)



4

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



5

5.     至此,所有输入完毕。批处理进入自动化处理中,开始自动连接FTP服务器下载VHD文件



6

6.     可以看到要下载的VHD临时文件。估计要下载20到30分



7

7.     下载完毕。可以看到启动项内自动添加分区D中基于VHD文件启动的Windows 8的启动信息。



8

8.     重新引导可看到Windows 8的选项



9

9.     选择后进入Windows 8。



10

10.  最后附上打开磁盘管理及磁盘分区的截图。



至此,Windows 7隐藏启动分区、批处理部署基于VHD文件启动的Windows 8演示完毕

接下来,笔者将演示卸载基于VHD文件启动的Windows 8

un01

1.     首先,进入Windows 7。运行批处理。选择卸载



unwin802.png

2.     卸载成功。可以看到BCD里已删除Windows 8的启动信息。VHD文件也被删除


至此。所有内容演示完毕

在企业环境中,还有少部分计算机安装了XP与Windows 7双系统。正常情况下。双系统的启动文件是存放于隐藏分区。故批处理只需将本篇内容中有关隐藏分区的内容删掉、或者和本篇内容一致,加上判断语句即可。由于批处理基本与Windows 7下使用批处理员工DIY部署基于VHD文件启动的Windows 8相同。笔者就不再叙述。

8.   总结



至此,历时1周半,本系列终于完结。

本系列中,笔者对部署基于VHD文件启动Windows 8的各种方法做了详细介绍,并针对IT部门非正规化管理、公司内(非)IT专业人士、傻瓜化、自己DIY部署基于VHD文件启动的windows8的想法做了一些探讨。本系列所有内容也可用于部署基于VHD文件启动的Windows 7。希望读者在阅读完本系列后能感觉有所收获。



Lblneva  

2013.03.26

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

UID
259359
帖子
30285
PB币
38212
贡献
0
技术
63
活跃
2976

7周年庆典勋章 8周年庆典勋章 水神勋章

板凳
发表于 2013-3-26 16:54:53 IP属地江西 |只看该作者
lblneva 发表于 2013-3-26 14:24
4.     win7instll1.bat
5.     win7uninstall.bat
7.5.5 批处理的演示

好全的系列啊,全收藏了。谢谢分享!

Rank: 1

UID
3602647
帖子
36
PB币
83
贡献
0
技术
0
活跃
2
4F
发表于 2013-3-26 17:23:34 IP属地福建 |只看该作者
不同的操作系统,引导不一致。这个非常重要

扫黄打非。

Rank: 9

UID
624463
帖子
4996
PB币
10923
贡献
0
技术
1
活跃
1146
5F
发表于 2013-3-26 20:24:58 IP属地北京 |只看该作者
写得真好,收藏了

Rank: 2Rank: 2

UID
3117303
帖子
102
PB币
6
贡献
0
技术
0
活跃
101
6F
发表于 2013-3-26 22:25:48 IP属地河北 |只看该作者
受教了,大侠

Rank: 5Rank: 5Rank: 5

UID
1905567
帖子
1139
PB币
1126
贡献
0
技术
0
活跃
545
7F
发表于 2013-3-29 16:05:46 IP属地新疆 |只看该作者
谢谢分享!

Rank: 2Rank: 2

UID
1396455
帖子
194
PB币
1067
贡献
0
技术
0
活跃
90
8F
发表于 2013-3-29 20:03:05 IP属地山东 来自手机 |只看该作者
恭谨受教,虚心学习

Rank: 5Rank: 5Rank: 5

UID
538770
帖子
1058
PB币
1361
贡献
0
技术
0
活跃
752
9F
发表于 2013-3-29 20:56:46 IP属地湖北 |只看该作者
写得太好了,我挺你

Rank: 2Rank: 2

UID
47374
帖子
162
PB币
1906
贡献
0
技术
0
活跃
203
10F
发表于 2015-2-8 10:39:17 IP属地湖北 |只看该作者
好全的系列啊
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛