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

投稿人:张笑寒

本篇接浅谈基于VHD方式在中小型企业内部署Windows 8的一些思路与方法(4)-1
地址:https://blogs.technet.com/b/chinatechnet/archive/2013/07/15/vhd-windows-8-4-1.aspx

 

2.     xpchangiu.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. 
21. :next2
22. if "%unisos%"=="1" goto instll
23. if "%unisos%"=="2" goto uninstall
24. echo 您输入有误,将返回重新输入
25. pause
26. goto uni
27. 
28. :instll
29. echo open 192.168.1.2> %temp%\XPinstll.txt
30. echo win8>> %temp%\XPinstll.txt
31. echo 123456>> %temp%\XPinstll.txt
32. echo lcd %temp%>> %temp%\XPinstll.txt
33. echo get XPinstll.bat>> %temp%\XPinstll.txt
34. echo bye>> %temp%\XPinstll.txt
35. echo 下载工具中。
36. ftp -s:%temp%\XPinstll.txt 1>nul
37. del /q %temp%\XPinstll.txt
38. call %temp%\XPinstll.bat
39. del /q %temp%\XPinstll.bat
40. exit
41. 
42. :uninstall
43. echo open 192.168.1.2> %temp%\XPuninstall.txt
44. echo win8>> %temp%\XPuninstall.txt
45. echo 123456>> %temp%\XPuninstall.txt
46. echo lcd %temp%>> %temp%\XPuninstall.txt
47. echo get XPuninstall.bat>> %temp%\XPuninstall.txt
48. echo bye>> %temp%\XPuninstall.txt
49. echo 下载工具中。
50. ftp -s:%temp%\XPuninstall.txt 1>nul
51. del /q %temp%\XPuninstall.txt
52. call %temp%\XPuninstall.bat
53. del /q %temp%\XPuninstall.bat
54. exit

3.     XPinstll.bat

1. @echo off
2. set _pf=_pf
3. dir /a a:\ntldr 1>nul 2>nul && set _pf=a
4. dir /a b:\ntldr 1>nul 2>nul && set _pf=b
5. dir /a c:\ntldr 1>nul 2>nul && set _pf=c
6. dir /a d:\ntldr 1>nul 2>nul && set _pf=d
7. dir /a e:\ntldr 1>nul 2>nul && set _pf=e
8. dir /a f:\ntldr 1>nul 2>nul && set _pf=f
9. dir /a g:\ntldr 1>nul 2>nul && set _pf=g
10. dir /a h:\ntldr 1>nul 2>nul && set _pf=h
11. dir /a i:\ntldr 1>nul 2>nul && set _pf=i
12. dir /a j:\ntldr 1>nul 2>nul && set _pf=i
13. dir /a k:\ntldr 1>nul 2>nul && set _pf=i
14. dir /a l:\ntldr 1>nul 2>nul && set _pf=i
15. dir /a m:\ntldr 1>nul 2>nul && set _pf=i
16. dir /a n:\ntldr 1>nul 2>nul && set _pf=i
17. 
18. If %_pf%==_pf goto assign
19. If not %_pf%==_pf goto updatent60
20. 
21. :assign
22. echo 盘符获取失败,请联系管理员
23. pause
24. goto exit
25. 
26. :updatent60
27. cls
28. echo 请打开计算机,确认要下载Win8的分区可用空间大于16G。
29. set vhdstore=
30. set /p vhdstore=请输入要下载到那个盘(如C盘请输入C。):
31. echo 您输入的字符串是:%vhdstore%,
32. set /p chkvhdstore=如果输入错误请按N,确认输入没错请按y,:
33. if "%chkvhdstore%"=="n" goto ftp
34. if "%chkvhdstore%"=="N" goto ftp
35. mkdir "%vhdstore%:\Windows 8 VHD"
36. goto ftp1
37. 
38. :ftp1
39. echo open 192.168.1.2> %temp%\ftptemp1.txt
40. echo win8>> %temp%\ftptemp1.txt
41. echo 123456>> %temp%\ftptemp1.txt
42. echo lcd %temp%>> %temp%\ftptemp1.txt
43. echo get 7za.exe>> %temp%\ftptemp1.txt
44. echo get bcd.7z>> %temp%\ftptemp1.txt
45. echo bye>> %temp%\ftptemp1.txt
46. echo 下载工具中。
47. ftp -s:%temp%\ftptemp1.txt 1>nul
48. echo 下载完毕。开始准备释放文件到启动盘
49. del %temp%\ftptemp1.txt
50. %temp%\7za.exe x %temp%\bcd.7z -y -o%_pf%:\ 1>nul 2>nul
51. del /q %temp%\7za.exe 1>nul 2>nul
52. del /q %temp%\bcd.7z 1>nul 2>nul
53. echo 释放完成
54. goto bcd
55. 
56. :bcd
57. %_pf%:\vhdtoolsx86\bootsect.exe /nt60 all /mbr
58. 
59. FOR /F "tokens=3 delims= " %%i in ('%_pf%:\vhdtoolsx86\bcdedit.exe /create /d "Windows 8" /application osloader') do set _win8id=%%i
60. 
61. %_pf%:\vhdtoolsx86\bcdedit.exe /set %_win8id% device vhd="[%vhdstore%:]\Windows 8 VHD\win8ent.vhd"
62. %_pf%:\vhdtoolsx86\bcdedit.exe /set %_win8id% osdevice vhd="[%vhdstore%:]\Windows 8 VHD\win8ent.vhd"
63. %_pf%:\vhdtoolsx86\bcdedit.exe /set %_win8id% path \Windows\system32\winload.exe
64. %_pf%:\vhdtoolsx86\bcdedit.exe /set %_win8id% systemroot \windows
65. %_pf%:\vhdtoolsx86\bcdedit.exe /set %_win8id% locale zh-cn
66. %_pf%:\vhdtoolsx86\bcdedit.exe /displayorder %_win8id% /addlast
67. 
68. %_pf%:\vhdtoolsx86\bcdedit.exe /create {ntldr} /d "Windows XP pro"
69. %_pf%:\vhdtoolsx86\bcdedit.exe /set {ntldr} device partition=%_pf%:
70. %_pf%:\vhdtoolsx86\bcdedit.exe /set {ntldr} path \ntldr
71. %_pf%:\vhdtoolsx86\bcdedit.exe /displayorder {ntldr} /addlast
72. 
73. %_pf%:\vhdtoolsx86\bcdedit.exe /set {bootmgr} default %_win8id%
74. %_pf%:\vhdtoolsx86\bcdedit.exe /timeout 30
75. rd /s /q %_pf%:\vhdtoolsx86
76. goto ftpvhd
77. 
78. :ftpvhd
79. echo open 192.168.1.2> %temp%\ftpvhd.txt
80. echo win8>> %temp%\ftpvhd.txt
81. echo 123456>> %temp%\ftpvhd.txt
82. echo lcd "%vhdstore%:\Windows 8 VHD">> %temp%\ftpvhd.txt
83. echo get win8ent.vhd>> %temp%\ftpvhd.txt
84. echo bye>> %temp%\ftpvhd.txt
85. echo 下载Win8时间较长,大概需要30分的时间。
86. ftp -s:%temp%\ftpvhd.txt 1>nul
87. del %temp%\ftpvhd.txt
88. echo 下载完毕。现在可以重启进入Windows 8
89. pause
90. exit

4.     XPuninstall.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. 
13. If %_vhdfile%==vhdfile goto quit
14. If not %_vhdfile%==vhdfile goto next3
15. exit
16. 
17. :next3
18. echo open 192.168.1.2> %temp%\delvhdwin8.txt
19. echo win8>> %temp%\delvhdwin8.txt
20. echo 123456>> %temp%\delvhdwin8.txt
21. echo lcd %temp%>> %temp%\delvhdwin8.txt
22. echo get icacls.exe>> %temp%\delvhdwin8.txt
23. echo get takeown.exe>> %temp%\delvhdwin8.txt
24. echo get bootsect.exe>> %temp%\delvhdwin8.txt
25. echo bye>> %temp%\delvhdwin8.txt
26. echo 下载工具中。
27. ftp -s:%temp%\delvhdwin8.txt 1>nul
28. del /q %temp%\delvhdwin8.txt
29. echo 工具下载完毕。开始删除Windows 8作业
30. 
31. %temp%\bootsect.exe /nt52 all /mbr
32. dir /a a:\bootmgr 1>nul 2>nul && set _bootpf=a
33. dir /a b:\bootmgr 1>nul 2>nul && set _bootpf=b
34. dir /a c:\bootmgr 1>nul 2>nul && set _bootpf=c
35. dir /a d:\bootmgr 1>nul 2>nul && set _bootpf=d
36. dir /a e:\bootmgr 1>nul 2>nul && set _bootpf=e
37. dir /a f:\bootmgr 1>nul 2>nul && set _bootpf=f
38. dir /a g:\bootmgr 1>nul 2>nul && set _bootpf=g
39. dir /a h:\bootmgr 1>nul 2>nul && set _bootpf=h
40. dir /a i:\bootmgr 1>nul 2>nul && set _bootpf=i
41. %temp%\takeown.exe /F %_bootpf%:\bootmgr /A
42. %temp%\takeown.exe /F %_bootpf%:\boot /R /A
43. %temp%\takeown.exe /F %_bootpf%:\BOOTNXT /A
44. %temp%\takeown.exe /F %_bootpf%:\BOOTSECT.BAK /A
45. %temp%\icacls.exe %_bootpf%:\bootmgr /grant Administrators:F
46. %temp%\icacls.exe %_bootpf%:\boot /grant Administrators:F /T
47. %temp%\icacls.exe %_bootpf%:\BOOTNXT /grant Administrators:F
48. %temp%\icacls.exe %_bootpf%:\BOOTSECT.BAK /grant Administrators:F
49. 
50. del %temp%\icacls.exe /a /f /q
51. del %temp%\takeown.exe /a /f /q
52. del %temp%\bootsect.exe /a /f /q
53. del %_bootpf%:\bootmgr /a /f /q
54. del %_bootpf%:\BOOTNXT /a /f /q
55. del %_bootpf%:\BOOTSECT.BAK /a /f /q
56. rd %_bootpf%:\boot /s /q
57. rd "%_vhdfile%:\Windows 8 VHD" /s /q
58. 
59. cls
60. echo Windows 8卸载完成
61. pause
62. exit
63. 
64. :quit
65. echo 您未通过本工具安装Windows 8.故无法卸载Windows 8
66. pause
67. 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.     安装批处理删除临时文件名多.txt
2.     卸载批处理漏掉删除vhd文件命令

本篇提供的批处理以修复以上问题。

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

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

卸载批处理演示视频共一段:
https://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的形式多帖发布。由于审核问题,显示时间可能会有延后。请读者见谅。

 

Lblneva 
2013.03.23