您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: