使用 PowerShell 脚本检查 Windows 11 硬件准备情况

Jacki

在这篇文章中,我们将看看如何使用微软官方硬件就绪.ps1用于在域计算机上执行批量 Windows 11 硬件兼容性检查的 PowerShell 脚本。

此脚本检查计算机是否满足以下运行 Windows 11 的最低要求:

  • 兼容的 x64 处理器(支持的 CPU 的完整列表
  • 4+ GB 内存
  • 最小 64 GB 硬盘大小
  • 启用 UEFI 和安全启动的设备
  • 与 DirectX 12 和 WDDM 2.0 驱动程序兼容的显卡
  • TPM 2.0模块

要手动检查特定计算机的硬件是否与 Windows 11 要求兼容:

  1. 下载硬件就绪.ps1脚本 (https://aka.ms/HWReadinessScript)。
  2. 打开提升的 Windows PowerShell 控制台(该脚本使用Get-WMIObjectcmdlet,最新版本的 PowerShell Core 不支持)
  3. 在当前会话中启用 PowerShell 脚本执行:Set-ExecutionPolicy -Scope Process RemoteSigned
  4. 运行脚本:
    .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。