使用 PowerShell 脚本检查 Windows 11 硬件准备情况
在这篇文章中,我们将看看如何使用微软官方硬件就绪.ps1用于在域计算机上执行批量 Windows 11 硬件兼容性检查的 PowerShell 脚本。
此脚本检查计算机是否满足以下运行 Windows 11 的最低要求:
- 兼容的 x64 处理器(支持的 CPU 的完整列表)
- 4+ GB 内存
- 最小 64 GB 硬盘大小
- 启用 UEFI 和安全启动的设备
- 与 DirectX 12 和 WDDM 2.0 驱动程序兼容的显卡
- TPM 2.0模块
要手动检查特定计算机的硬件是否与 Windows 11 要求兼容:
- 下载硬件就绪.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 脚本获取 Windows 事件日志年龄
请注意,此 PowerShell 脚本文件的代码已由 Microsoft 进行数字签名。然而,签名证书已于 2022 年到期。
编辑 HardwareReadiness.ps1 文件并在末尾、之前添加以下代码#SIG # 签名块开始:
$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 中的计算机属性。
将 PS1 脚本文件复制到\woshub.locNetlogon域控制器上的文件夹。


打开域组策略管理控制台(gpmc.msc),创建一个新的 GPO,并将其链接到计算机的 OU。
导航至计算机配置 -> 策略 -> Windows 设置 -> 脚本(启动/关闭)-> 启动 ->选项卡PowerShell 脚本,并指定 HardwareReadiness.ps1 脚本的 UNC 路径


转到计算机配置 -> 管理模板 -> 系统 -> 组策略。启用策略配置登录脚本延迟并设置一个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 格式转换。


目前,您可以通过使用注册表中的多个注册表选项,在全新安装 Windows 11 期间忽略对 TPM、安全启动和其他硬件要求的检查。实验室配置钥匙。并与允许升级不支持的TP或CPU关键是,即使在硬件不受支持的计算机上,您也可以升级到 Windows 11。
