Windows 预安装环境(Windows PE)是一个轻量级 Windows 版本,主要用于微软的部署解决方案。在微软的操作系统批量部署场景中经常会用到,例如:将 Nano Server 部署到物理服务器时会用到、SCCM 批量部署 Windows 时会用到、MDT 的批量部署场景中也会用到。Windows PE 适用于非常灵活的使用场景,可用于 PXE 启动或 USB 引导,在需要时还可为其 WIM 文件注入驱动、应用无人应答文件及进行功能开发。
Windows PE 的媒体文件包含于 Windows 评估和部署工具包(Windows ADK)中,安装 Windows ADK 之后便可提取和制作 Windows PE 环境。大家可以到微软网站下载最新的 ADKSetUp.exe 文件来在线安装最新版本的 Windows ADK,或者直接在之前的文章中下载我制作好的离线安装映像。
下载过程和安装过程非常简单,在此我就不介绍了,要想打造启用 PowerShell 功能的 Windows PE,在安装 Windows ADK 时至少需要选择如下两个选项:
- 部署工具
- Windows 预安装环境(Windows PE)
使用 ADKSetUp.exe 在线安装 ADK 的用户其实不必等待其完全下载,安装工具是支持命令行使用的,要安装以上两个必要组件可使用如下命令:
adksetup.exe /features OptionId.DeploymentTools OptionId.WindowsPreinstallationEnvironment /quiet
执行该命令后会自动下载所需文件,并安装在默认位置。
在为 Windows PE 环境启用 Windows PowerShell 脚本功能之前,我们需要先对其进行测试:
由于在 Windows PE 环境中需要使用到如下文件夹:
C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment
因此我们可以使用 Test-Path 来创建一个 Test-WindowsADK 函数来验证路径是否存在,该测试可直接返回 True 或 False 的布尔值。
Function Test-WindowsADK
{
Test-Path "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment"
}
但大家使用的环境可能为 32 位或 64 位,所以还需要使用 Win32_OperatingSystem 的 Get-CimInstance 来识别当前系统的架构并更确认路径位置:
(Get-CimInstance Win32_operatingsystem).OSArchitecture
对于不同架构的 Windows,其返回值为 32 位 或 64 位,所以我们可以再新建个函数来处理:
function Get-ArchitectureString
{
$Arch=(Get-CimInstance win32_operatingsystem).OSArchitecture
if ($Arch='32-Bit')
{
Return [string]' (x86)'
}
}
最终我们可以通过如下代码来判断 Windows ADK 是否安装在 64 位 Windows 当中:
Function Test-WindowsADK
{
Test-Path "C:\Program Files$(Get-ArchitectureString)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment"
}
本文的示例就为大家写到这里,好玩的东西我们下次继续,下次的文章人我们开始创建启用 PowerShell 功能的 Windows PE。