使用 PowerShell 脚本检查 Windows 11 硬件准备情况
在本文中,我们将了解如何使用官方 Microsoft HardwareReadiness.ps1 PowerShell 脚本在域计算机上执行批量 Windows 11 硬件兼容性检查。
此脚本检查计算机是否满足以下运行 Windows 11 的最低要求:
兼容的 x64 处理器(支持的 CPU 的完整列表)
4+ GB 内存
最小 64 GB 硬盘大小
-
启用 UEFI 和安全启动的设备
与 DirectX 12 和 WDDM 2.0 驱动程序兼容的显卡
TPM 2.0模块
要手动检查特定计算机的硬件是否与 Windows 11 要求兼容:
下载 HardwareReadiness.ps1 脚本 (https://aka.ms/HWReadinessScript)。
打开提升的 Windows PowerShell 控制台(该脚本使用
Get-WMIObjectcmdlet,最新版本的 PowerShell Core 不支持)
在当前会话中启用 PowerShell 脚本执行:
Set-ExecutionPolicy -Scope Process RemoteSigned运行脚本:
.\HardwareReadiness.ps1
该脚本已返回代码0。这意味着您的计算机满足 Windows 11 的硬件要求(
returncode:0 , resurnresult=CAPABLE)。
{"returnCode":0,"returnReason":"","logging":"Storage: OSDiskSize=427GB. PASS; Memory: System_Memory=32GB. PASS; TPM: TPMVersion=2.0, 0, 1.38. PASS; Processor: {AddressWidth=64; MaxClockSpeed=3901; NumberOfLogicalCores=12; Manufacturer=AuthenticAMD; Caption=AMD64 Family 25 Model 80 Stepping 0; }. PASS; SecureBoot: Capable. PASS; ","returnResult":"CAPABLE"}假设您需要在企业计算机上执行大规模 Windows 11 兼容性检查。在这种情况下,您可以运行此 PowerShell 脚本并使用 SCCM、Intune 甚至 WSUS(也可以部署第三方软件和脚本)等工具收集信息。对于简单的情况,您可以通过组策略运行此 PowerShell 脚本,并将结果保存在 Active Directory 的计算机对象属性中。
原来的脚本代码需要稍微修改一下。
请注意,此 PowerShell 脚本文件的代码已由 Microsoft 进行数字签名。然而,签名证书已于 2022 年到期。
编辑 HardwareReadiness.ps1 文件并在末尾、#SIG # Begin 签名块: 之前添加以下代码
$outObject = $outObject | ConvertTo-Json -Compress
$computer = $env:COMPUTERNAME
$ComputerSearcher = New-Object DirectoryServices.DirectorySearcher
# Specify your domain name
$ComputerSearcher.SearchRoot = "LDAP://DC=WOSHUB,DC=LOC"
$ComputerSearcher.Filter = "(&(objectCategory=Computer)(CN=$Computer))"
$computerObj = [ADSI]$ComputerSearcher.FindOne().Path
$computerObj.Put( "Info", $outObject )
$computerObj.SetInfo()此 PowerShell 代码将 Windows 11 兼容性信息写入 Active Directory 中的 Info 计算机属性。
将 PS1 脚本文件复制到
\\a-d.loc\Netlogon域控制器上的文件夹。
打开域组策略管理控制台(
gpmc.msc),创建一个新的 GPO,并将其链接到计算机的 OU。
导航至计算机配置 -> 策略 -> Windows 设置 -> 脚本(启动/关闭)-> 启动 -> 选项卡 PowerShell 脚本,然后指定 HardwareReadiness 的 UNC 路径.ps1 脚本
转到计算机配置 -> 管理模板 -> 系统 -> 组策略。启用策略配置登录脚本延迟并设置1 分钟脚本执行延迟。
另外,在计算机配置 -> 管理模板 -> 系统 -> 登录下启用计算机启动和登录时始终等待网络选项。
详细了解如何通过 GPO 运行登录 PowerShell 脚本。
重新启动客户端的计算机。启动 ADUC 控制台(
dsa.msc)并打开计算机属性。转到属性编辑器选项卡,检查信息参数现在是否包含检查计算机 Windows 11 兼容性的结果。在“属性编辑器”选项卡中,检查 信息 参数现在是否包含计算机 Windows 11 兼容性检查的结果。
在所有计算机上运行登录脚本后,您可以使用 Get-ADComputer cmdlet 从 Active Directory 快速查看有关兼容和不兼容计算机的信息:
Get-ADComputer -Filter {enabled -eq "true"} -properties *| Where-Object {$_.info -ne $null}有关不兼容计算机和不满足 Win 11 最低要求的特定计算机硬件的更多详细信息,请运行以下 PowerShell 脚本:
$Report = @()
$computers = Get-ADComputer -Filter {enabled -eq "true"} -properties *| Where-Object { $_.Info -match '"returnCode":1'}
foreach ($computer in $computers){
$jsonString =$computer.info
$object = $jsonString | ConvertFrom-Json
$returnReasonValues = $object.returnReason -split ', '
$CompInfo = [PSCustomObject]@{
"Computer" = $computer.name
"NonCompatibleItems" = $returnReasonValues
}
$Report += $CompInfo
}
$Report|fl
ConvertFrom-Json cmdlet 用于将数据从 JSON 格式转换。
目前,通过使用 LabConfig 键中的多个注册表选项,您可以在全新安装 Windows 11 期间忽略对 TPM、安全启动和其他硬件要求的检查。通过 AllowUpgradesWithUnsupportedTPMorCPU 键,您甚至可以在硬件不受支持的计算机上升级到 Windows 11。






