PowerShell скрипт для проверки совместимости компьютеров с Windows 11

В этой статье мы рассмотрим, как массово проверить ваши компьютеры на совместимость с Windows 11 с помощью PowerShell скрипта. За основу можно взять официальный скрипт HardwareReadiness.ps1 от Microsoft (https://aka.ms/HWReadinessScript).

Данный скрипт проверяет, что компьютер удовлетворяет следующим минимальным требованиям, необходимым для запуска Windows 11:

  • Совместимый x64 процессор (полный список поддерживаемых CPU)
  • 4+ ГБ RAM
  • Минимальный размер диска 64 ГБ
  • Устройство с UEFI и включенной Secure Boot
  • Видеокарта совместимая с DirectX 12 и WDDM 2.0 драйверов
  • TPM 2.0 модуль
  • Монитор с разрешением 720x

Чтобы вручную проверить совместимость отдельного компьютера с Windows 11,

  1. Cкачайте скрипт HardwareReadiness.ps1 по ссылке выше.
  2. Откройте консоль Windows PowerShell с правами администратора (в скрипте используется командлет Get-WMIObject, который не поддерживается в более новой версии PowerShell Core)
  3. Разрешите запуск PowerShell скрипта в текущей сессии: Set-ExecutionPolicy -Scope Process RemoteSigned
  4. Выполните скрипт:
    .\HardwareReadiness.ps1

PowerShell скрипт HardwareReadiness.ps1 - проверка компьютера на совместимость с Windows 11

Скрипт вернул код 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, тогда для распространения этого скрипта и сбора информации можно использовать такие инструменты как SCCM, Intune или даже WSUS для запуска сторонних скриптов. В самом простом случае можно запустить этот PowerShell скрипт с помощью групповых политик и сохранить результаты в свойства компьютера в Active Directory.

Код скрипт нужно немного модифицировать.

Обратите внимание, что код этого PowerShell скрипта подписан цифровой подписью Microsoft, однако срок действия подписывающего сертификата истек в 2022.

Отредактируйте файл HardwareReadiness.ps1 и добавьте в конце следующий код перед блоком #SIG # Begin signature block:

$outObject = $outObject | ConvertTo-Json -Compress
$computer = $env:COMPUTERNAME
$ComputerSearcher = New-Object DirectoryServices.DirectorySearcher
# Укажите ваше имя домена
$ComputerSearcher.SearchRoot = "LDAP://DC=CONTOSO,DC=COM"
$ComputerSearcher.Filter = "(&(objectCategory=Computer)(CN=$Computer))"
$computerObj = [ADSI]$ComputerSearcher.FindOne().Path
$computerObj.Put( "Info", $outObject )

$computerObj.SetInfo()

PowerShell скрипт для записи информации о совместимых с Win 11 компьютерах в AD

Данный код запишет в атрибут компьютера Info в Active Directory информацию о совместимости с Windows 11.

Скопируйте скрипт в папку \\winitpro.loc\Netlogon на контроллере домена.

PowerShell логон скрипт в папке NETLOGON

Откройте консоль управления доменными групповыми политиками ( gpmc.msc ) и создайте новую GPO для OU с компьютерами.

Перейдите в раздел Computer Configuration -> Policies -> Windows Settings -> Scripts (Startup / Shutdown) -> Startup -> вкладка PowerShell Scripts и укажите UNC путь к скрипту HardwareReadiness.ps1

Запуск PowerShell скрипта при загрузке компьютера через GPO

В разделе Computer Configuration -> Administrative Templates -> System -> Group Policy. Включите политику Configure Logon Script Delay и задайте 1 минуту задержки запуска скрипта.

Также включите параметр Always wait for the network at computer startup and logon в Computer Configuration -> Admin Templates -> System -> Logon.

Перезагрузите компьютер. Запустите консоль ADUC ( dsa.msc ), и откройте свойства компьютера. Перейдите на вкладку редактора атрибутов и проверьте, что в параметре Info теперь содержится результаты проверки компьютера на совместимость с Windows 11.

Информация о совместимости компьютера с Windows 11 в Active Directory

После того, как логон скрипт отработает на всех компьютерах, вы можете быстро вывести информацию о совместимых и не совместимых компьютерах из Active Directory с помощью командлета Get-ADComputer.

Get-ADComputer -Filter {enabled -eq "true"} -properties *| Where-Object {$_.info -ne $null}

Get-ADComputer - значение атрибута

Чтобы вывести более подробную информацию о несовместимых компьютерах и оборудовании, которое не удовлетворяют минимальным требованиям, выполните:

$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
Для преобразования данных из JSON формата используется командлет ConvertFrom-Json.

PowerShell - собрать информацию о совместимости компьютеров с Windows 11 из Active Directory

На сегодняшний день момент с помощью параметров реестра в ветке LabConfig можно игнорировать проверку требований TPM, Secure Boot и других при чистой установке Windows 11. А с помощью ключа AllowUpgradesWithUnsupportedTPMorCPU можно обновится до Windows 11 даже на неподдерживаемых компьютерах.

Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)