|
|
你在 WimBuilder 里勾选了 PowerShell 相关 CAB 但仍无法使用,核心原因通常是依赖顺序错误、语言包缺失、WimBuilder 组件加载机制问题、执行策略未配置这四类。下面按最可能的原因给出完整排查与修复方案。
一、先确认:PowerShell 在 Win11 PE 中的强制依赖与安装顺序(微软官方)
必须按以下严格顺序添加,缺一不可,且必须同时加语言包(如 en‑US):
- WinPE-WMI-Package + 对应语言包(如WinPE-WMI_en‑us.cab)
- WinPE-NetFX-Package + 对应语言包
- WinPE-Scripting-Package + 对应语言包
- WinPE-PowerShell-Package + 对应语言包
只勾选主 CAB、不装语言包,或顺序乱了,PowerShell 必无法启动。
二、WimBuilder 常见坑
1. WimBuilder 组件勾选顺序无效 / 被打乱
- WimBuilder 的 AKD 勾选界面不保证按你勾选顺序安装,常自动按字母序加载,导致依赖顺序错误。
- 解决:改用 DISM 手动集成(最稳),或在 WimBuilder 里用 “专家模式 / 高级配置” 强制指定安装顺序。
2. 漏加语言包(最常见)
- 你只勾了WinPE-PowerShell.cab,但没勾同目录下的WinPE-PowerShell_en‑us.cab(或 zh‑CN)。
- 解决:在 AKD 里找到并勾选所有 4 个组件对应的语言包(如 en‑US/zh‑CN)。
3. Win11 ADK/WinPE 版本不匹配
- 用 Win10 ADK 做 Win11 PE,或 ADK 与 WinPE 加载项版本不一致,会导致组件不兼容。
- 解决:安装与 Win11 版本完全匹配的 ADK + WinPE 加载项(如 24H2 对应 24H2 ADK)。
4. WimBuilder 精简 / 优化过度
- 即使全勾,WimBuilder 仍可能自动精简掉 PowerShell 依赖的底层文件(如某些 DLL、注册表项)。
- 解决:关闭所有 “精简 / 优化 / 瘦身” 选项;或先做一个纯 ADK 的 PowerShell PE,再用 WimBuilder 套壳。
三、最稳修复方案:先做纯 ADK PowerShell PE,再导入 WimBuilder
步骤 1:准备 ADK 环境
- 安装Win11 对应版本的 ADK + WinPE 加载项(必须同版本)。
- 以管理员打开Deployment and Imaging Tools Environment。
步骤 2:创建并挂载 PE 工作目录
copype amd64 C:\WinPE_amd64_PSDism /Mount-Image /ImageFile:C:\WinPE_amd64_PS\media\sources\boot.wim /Index:1 /MountDir:C:\WinPE_amd64_PS\mount
步骤 3:按顺序添加 PowerShell 组件 + 语言包(关键)
- :: 1. WMI
- Dism /Add-Package /Image:C:\WinPE_amd64_PS\mount /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-WMI.cab"
- Dism /Add-Package /Image:C:\WinPE_amd64_PS\mount /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-WMI_en-us.cab"
- :: 2. NetFX
- Dism /Add-Package /Image:C:\WinPE_amd64_PS\mount /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-NetFX.cab"
- Dism /Add-Package /Image:C:\WinPE_amd64_PS\mount /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-NetFX_en-us.cab"
- :: 3. Scripting
- Dism /Add-Package /Image:C:\WinPE_amd64_PS\mount /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-Scripting.cab"
- Dism /Add-Package /Image:C:\WinPE_amd64_PS\mount /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-Scripting_en-us.cab"
- :: 4. PowerShell
- Dism /Add-Package /Image:C:\WinPE_amd64_PS\mount /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-PowerShell.cab"
- Dism /Add-Package /Image:C:\WinPE_amd64_PS\mount /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-PowerShell_en-us.cab"
复制代码
步骤 4:配置 PowerShell 执行策略(PE 中默认受限)
:: 挂载PE注册表reg load HKLM\PE_SOFTWARE C:\WinPE_amd64_PS\mount\Windows\System32\config\SOFTWARE:: 设置执行策略为Bypass(允许所有脚本)reg add HKLM\PE_SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell /v ExecutionPolicy /t REG_SZ /d Bypass /f:: 卸载注册表reg unload HKLM\PE_SOFTWARE
步骤 5:保存并卸载镜像
Dism /Unmount-Image /MountDir:C:\WinPE_amd64_PS\mount /Commit
步骤 6:导入 WimBuilder
- 将C:\WinPE_amd64_PS\media\sources\boot.wim复制到 WimBuilder 的test目录。
- 用 WimBuilder 加载此boot.wim,再做界面 / 驱动 / 软件定制。
四、PE 启动后验证 PowerShell
- 进入 PE,打开 CMD。
- 运行:cmd
where powershell.exe
应返回:X:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe - 直接启动:cmd
X:\Windows\System32\WindowsPowerShell\v1.0\powershell
能进入 PS 提示符即成功。
五、仍失败?终极排查
- 检查 ADK 版本:必须与 Win11 ISO 版本完全一致(如 24H2 对 24H2)。
- 检查架构:x64 PE 只能用 x64 组件,不能混用 x86。
- 检查 WimBuilder 版本:用最新版 WimBuilder2,旧版对 Win11 支持差。
- 禁用所有精简:WimBuilder 里关闭 “精简组件 / 移除无用文件 / 优化注册表” 等。
- 用纯 ADK PE 测试:先不进 WimBuilder,直接用MakeWinPEMedia做 U 盘启动,验证 PowerShell 是否可用。
六、总结
你当前的问题90% 是依赖顺序 + 语言包缺失 + WimBuilder 自动打乱顺序导致。优先用上面的DISM 手动集成方案,做出纯 PowerShell PE 后再导入 WimBuilder 定制,基本能解决。
|
|