WINPE自启动脚本Winpeshl.ini 和Startnet.cmd
2016-06-07 10:11
4571 查看
官方文档:https://msdn.microsoft.com/zh-cn/library/windows/hardware/dn938394(v=vs.85).aspx
一,Winpeshl.ini
使用 Windows 预安装环境 (Windows PE) 中的 Winpeshl.ini 文件将默认命令提示符替换为外壳应用程序或其他应用。例如,你的外壳应用可能会为部署工程师提供 GUI,以便选择安装 Windows 的方法。若要添加自定义应用,请创建一个名为 Winpeshl.ini 的文件,然后将它放置在自定义 Windows PE 映像的 %SYSTEMROOT%\System32 中。示例[LaunchApp] AppPath = %SYSTEMDRIVE%\Fabrikam\shell.exe [LaunchApps] %SYSTEMDRIVE%\Fabrikam\app1.exe %SYSTEMDRIVE%\Fabrikam\app2.exe, /s "C:\Program Files\App3"Wpeshl.ini 文件可能具有以下两个部分中的一个部分或兼而有之:[LaunchApp] 和 [LaunchApps]。[LaunchApp] 和 [LaunchApps] 中列出的应用以出现的顺序运行,并且在上一个应用终止之后才开始运行。
LaunchApp
将AppPath条目设置为应用的路径。可以使用完全限定路径,也可以包含环境变量(例如
%SYSTEMDRIVE%)来描述路径。注意 [LaunchApp] 条目可能仅包含一个应用。不能指定超过 250 个字符的命令。不能使用 LaunchApp 指定任何命令行选项。
LaunchApps
使用[LaunchApps]部分运行带命令行选项的应用。注意 LaunchApps 支持运行应用,但不支持常见脚本命令。相反,若要运行命令,请添加启动脚本 (startnet.cmd)。有关详细信息,请参阅WinPE:装载和自定义。不能指定超过 250 个字符的命令。若要向应用添加命令行选项,请进行以下操作:在以下应用名称后添加逗号 (,):
%SYSTEMDRIVE%\Fabrikam\app2.exe, <option>
二,Startnet.cmd
Windows PE (WinPE) 第一次运行时使用 Wpeinit 和 Startnet.cmd 运行启动脚本。Wpeinit 将日志消息输出到 C:\Windows\system32\wpeinit.log。Startnet.cmd
你可以通过使用 Startnet.cmd 在 Windows PE 中添加自定义的命令行脚本。默认情况下,Windows PE 包括位于自定义 Windows PE 映像的 %SYSTEMROOT%\System32 中的 Startnet.cmd 脚本。Startnet.cmd 将启动 Wpeinit.exe。Wpeinit.exe 将安装即插即用设备、处理 Unattend.xml 设置并加载网络资源。有关详细信息,请参阅WinPE:装载和自定义。三,Wpeinit 命令行选项
下列命令行选项可用于 Wpeinit:Wpeinit [-unattend:<path_to_answer_file>]示例:复制Wpeinit –unattend:"C:\Unattend-PE.xml"
四,Wpeutil 命令行选项
Windows® PE 实用工具 (Wpeutil) 是一个能够使你在 Windows PE 会话期间运行命令的命令行工具。例如,你可以关闭或重新启动 Windows PE、启用或禁用防火墙、设置语言设置以及初始化网络。Wpeutil 命令行选项
Wpeutil 使用以下约定。Wpeutil {命令} [argument]例如:复制Wpeutil ShutdownWpeutil EnablefirewallWpeutil SetMuiLanguage de-DE注意 Wpeutil 每行只能接受一个命令。
命令 | 说明 |
---|---|
CreatePageFile [/path=<path>] [/size=<size>] | 将页面文件创建为指定的路径和大小。默认路径为 C:\pagefile.sys,默认大小为 64 MB。至少要指定一个选项。例如:复制Wpeutil CreatePageFile /path=C:\pagefile.sys-或-复制 Wpeutil CreatePageFile /path=C:\pagefile.sys /size=128要点 如果存在页面文件,则必须将 /CreatePageFile 选项设置为等于或大于页面文件的当前大小,否则命令将会失败。 |
DisableExtendedCharactersForVolume <path_on_target_volume> | 禁用包含 path on target volume 的卷中的 DOS 兼容文件名称(8.3 格式)的扩展字符支持。此命令只适用于 NTFS 卷。path on target volume 必须指定卷的根目录。例如:复制Wpeutil DisableExtendedCharactersForVolume C:\如果禁用,使用扩展字符创建的全部文件的名称将转换为短文件名。 |
DisableFirewall | 禁用防火墙。例如:复制Wpeutil DisableFirewall |
EnableExtendedCharactersForVolume <path_on_target_volume> | 允许包含 path on target volume 的卷中的 8.3 格式文件名称中包含扩展字符。此命令只适用于 NTFS 卷。path on target volume 必须指定卷的根目录。例如:复制Wpeutil EnableExtendedCharactersForVolume C:\注意 如果你正在安装的操作系统所用语言中包含已默认启用的扩展字符,如 ja-JP 或 ko-KR,或使用的 Windows PE 拷贝所用语言不包含启用的扩展字符,如 en-US,则安装会导致在首次启动时出现 Chkdsk 错误。在安装至该卷前启用此选项能够避免运行 Chkdsk 命令。 |
EnableFirewall | 启用防火墙。例如:复制Wpeutil EnableFirewall |
InitializeNetwork | 初始化网络组件和驱动程序,并设置计算机名为一个随机选择的值。例如:复制Wpeutil InitializeNetwork |
ListKeyboardLayouts <LCID> | 列出给定区域设置 ID (LCID) 值的受支持的键盘布局(名称和 ID)。在注册表中,键盘布局也会在以下项中得到更新: HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinPE\KeyboardLayouts。例如:复制Wpeutil ListKeyboardLayouts 0x0409-或-复制 Wpeutil ListKeyboardLayouts 1033有关有效区域设置 ID 列表,请参阅区域设置 ID (LCID) 表。 |
Reboot | 重新开始当前 Windows PE 会话。例如:复制Wpeutil Reboot |
SaveProfile | 停止记录并将自定义配置文件保存至用户之前使用 Dism /enable-profiling 命令指定的位置。有关 /enable-profiling 命令行选项的详细信息,请参阅DISM Windows PE 服务命令行选项。例如:复制Wpeutil SaveProfile profile_file_name "short description" |
SetKeyboardLayout <keyboard_layout_ID> | 在当前 Windows PE 会话中设置键盘布局。此设置将对此命令成功后的进程生效。若要获得受支持键盘布局列表,输入:复制ListKeyboardLayouts LCID例如,若要设置 en-US 键盘:复制 Wpeutil SetKeyboardLayout 0409:00000409 |
SetMuiLanguage <language-name>[;<language-name>] | 设置语言。<language-name> 使用国际语言代码格式(例如,en-US 表示美国英语)。可以按照优先顺序指定多个语言,用分号分隔。例如:复制Wpeutil SetMuiLanguage de-DE;en-US |
SetUserLocale <language-name>[;<language-name>] | 设置用户区域设置。 <language-name> 使用国际语言代码格式(例如,en-US 表示美国英语)。可以按照优先顺序指定多个语言,用分号分隔。例如:复制Wpeutil SetUserLocale de-DE;en-US |
Shutdown | 关闭当前 Windows PE 会话。例如:复制Wpeutil Shutdown注意 你也可以在命令提示窗口进行以下操作:单击“关闭”按钮键入 EXIT |
UpdateBootInfo | 使用与 Windows PE 启动方式相关的信息填充注册表。运行此命令后,请查询注册表。例如:复制wpeutil UpdateBootInforeg query HKLM\System\CurrentControlSet\Control /v PEBootType此操作的结果在加载其他驱动程序支持之后可能会改变。若要确定 Windows PE 启动的位置,请检查以下项:PEBootType:Error、Flat、Remote、Ramdisk:SourceIdentified、Ramdisk:SourceUnidentified、Ramdisk:OpticalDrivePEBootTypeErrorCode:HRESULT 代码PEBootServerName:Windows 部署服务服务器名称PEBootServerAddr:Windows 部署服务服务器 IP 地址PEBootRamdiskSourceDrive:源驱动器号(如果有)。PEFirmwareType:固件启动模式:BIOS 为 0x1,UEFI 为 0x2。如果你未启动 Windows 部署服务,则确定 Windows PE 启动位置的最佳方法是首先检查 PEBootRamdiskSourceDrive 注册表项。如果不存在此注册表项,则扫描正确 PEBootType 的驱动器,并查找用于识别启动驱动器的某种标记文件。 |
WaitForNetwork | 等待网卡初始化。在创建脚本时使用此命令,以确保在继续操作前网卡已完全初始化。 |
WaitForRemovableStorage | 在 Windows PE 启动序列中,在初始化可移动存储设备(如 USB 硬盘驱动器)之前,此命令将被阻止。例如:复制Wpeutil WaitForRemovableStorage注意 WaitForRemovableStorage 的拼写正确。 |
五,startnet命令详解
1.打开startnet.cmd里面显示winpeinit,即当你引导进入WINPE会自动运行startnet.cmd然后进入WINPE,部署系统就需要往startnet.cmd里面添加指令了。2.修改 Startnet.cmd 脚本以包括自定义命令。该文件位于C:\WinPE_amd64\mount\Windows\System32\Startnet.cmd。@ECHO off@REM@REM Initialize WinPE@ECHO wpeinitWPEINIT@ECHO.@ECHO *****************************************************************@ECHO call wpeutil UpdateBootInfoWPEUTIL UpdateBootInfo@ECHO.SET WinPEREG="HKLM\System\CurrentControlSet\Control"SET WinPEKey=PEBootRamdiskSourceDriveSET WinPESource=@ECHO.@REM Get volume letter of USB Key@ECHO for /f "skip=2 tokens=3" %%A in ('call Reg query %WinPEREG% /v %WinPEKEY%') do set WinPESource=%%AFOR /f "skip=2 tokens=3" %%A IN ('call Reg query %WinPEREG% /v %WinPEKEY%') DO SET WinPESource=%%A@ECHO WinPESource is drive letter "%WinPESource%"@ECHO.@ECHO.IF "%WinPESource%"=="" ECHO Drive letter NOT found.&& CALL :FINDDRIVE@ECHO.@ECHO.ECHO WinPESource is "%WinPESource%"@ECHO.@ECHO *****************************************************************@ECHO Call and run main.cmd on the USB Key@ECHO *****************************************************************@ECHO call %WinPESource%Scripts\main.cmdCALL %WinPESource%Scripts\main.cmd@ECHO.GOTO :END:ERROR@ECHO.@ECHO An error has been detected.COLOR 4F@ECHO.GOTO :END:FINDDRIVE@ECHO.@ECHO Trying to find drive letter using diskpart@ECHO.@ECHO Lis Vol>x:\FindVol.txt@ECHO.@ECHO Running Diskpart to get Volume letters@ECHO.DISKPART /s x:\FindVol.txt>x:\VolumeList.txt@ECHO.@ECHO Parsing list to find WinPE@ECHO.FOR /f "skip=8 tokens=3-4" %%A IN (x:\VolumeList.txt) DO (@ECHO Checking drive letter %%A has volume label of %%BIF /i "%%B"=="WINPE" SET WinPESource=%%A)SET WinPESource=%WinPESource%:\GOTO :EOF:END
相关文章推荐
- python实现多线程的方式及多条命令并发执行
- css position, display, float 内联元素、块级元素
- 高并发性能提升和超卖的解决方案
- GAMIT 软件中 trackRT 模块的安装
- 【leetcode】191. Number of 1 Bits
- UniEAP Platform开发环境搭建
- c#转换ASCII,很不错
- 乐视乐2怎么恢复误删照片
- jQuery控制div实现随滚动条滚动效果
- UML类图几种关系的总结
- 笔记之解决ScrollView起始位置不是最顶部的问题
- java的if else语句入门
- Android Studio 修改包名packageName
- C#委托和事件的困惑
- 机器学习笔记(一)——线性回归算法
- ble4.0节省功耗原因
- 替换a b 的值,不借助过度变量(两值相互替换不借助中间变量)
- Jboss的JBWEB000065: HTTP Status 404 原因
- 捕获Home键
- SqlServer索引的原理与应用