一,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 Shutdown Wpeutil Enablefirewall Wpeutil 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
注意
你也可以在命令提示窗口进行以下操作:
|
UpdateBootInfo | 使用与 Windows PE 启动方式相关的信息填充注册表。 运行此命令后,请查询注册表。例如: wpeutil UpdateBootInfo reg query HKLM\System\CurrentControlSet\Control /v PEBootType 此操作的结果在加载其他驱动程序支持之后可能会改变。 若要确定 Windows PE 启动的位置,请检查以下项:
如果你未启动 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 wpeinit
WPEINIT
@ECHO.
@ECHO *****************************************************************
@ECHO call wpeutil UpdateBootInfo
WPEUTIL UpdateBootInfo
@ECHO.
SET WinPEREG="HKLM\System\CurrentControlSet\Control"
SET WinPEKey=PEBootRamdiskSourceDrive
SET 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=%%A
FOR /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.cmd
CALL %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 %%B
IF /i "%%B"=="WINPE" SET WinPESource=%%A
)
SET WinPESource=%WinPESource%:\
GOTO :EOF
:END