WINPE自启动脚本Winpeshl.ini 和Startnet.cmd | 您所在的位置:网站首页 › 开机启动ghost怎么设置 › WINPE自启动脚本Winpeshl.ini 和Startnet.cmd |
官方文档:
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, 二,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:] 示例: 复制 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=] [/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 的卷中的 DOS 兼容文件名称(8.3 格式)的扩展字符支持。此命令只适用于 NTFS 卷。path on target volume 必须指定卷的根目录。例如: 复制 Wpeutil DisableExtendedCharactersForVolume C:\如果禁用,使用扩展字符创建的全部文件的名称将转换为短文件名。 DisableFirewall 禁用防火墙。例如: 复制 Wpeutil DisableFirewallEnableExtendedCharactersForVolume 允许包含 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 EnableFirewallInitializeNetwork 初始化网络组件和驱动程序,并设置计算机名为一个随机选择的值。例如: 复制 Wpeutil InitializeNetworkListKeyboardLayouts 列出给定区域设置 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 RebootSaveProfile 停止记录并将自定义配置文件保存至用户之前使用 Dism /enable-profiling 命令指定的位置。有关 /enable-profiling 命令行选项的详细信息,请参阅 DISM Windows PE 服务命令行选项。例如: 复制 Wpeutil SaveProfile profile_file_name "short description"SetKeyboardLayout 在当前 Windows PE 会话中设置键盘布局。此设置将对此命令成功后的进程生效。若要获得受支持键盘布局列表,输入: 复制 ListKeyboardLayouts LCID例如,若要设置 en-US 键盘: 复制 Wpeutil SetKeyboardLayout 0409:00000409SetMuiLanguage [;] 设置语言。 使用国际语言代码格式(例如,en-US 表示美国英语)。可以按照优先顺序指定多个语言,用分号分隔。例如: 复制 Wpeutil SetMuiLanguage de-DE;en-USSetUserLocale [;] 设置用户区域设置。 使用国际语言代码格式(例如,en-US 表示美国英语)。可以按照优先顺序指定多个语言,用分号分隔。例如: 复制 Wpeutil SetUserLocale de-DE;en-USShutdown 关闭当前 Windows PE 会话。例如: 复制 Wpeutil Shutdown 注意你也可以在命令提示窗口进行以下操作: 单击“关闭”按钮 键入 EXIT UpdateBootInfo 使用与 Windows PE 启动方式相关的信息填充注册表。 运行此命令后,请查询注册表。例如: 复制 wpeutil UpdateBootInfo reg 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 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
|
CopyRight 2018-2019 实验室设备网 版权所有 |