Alles rund um Windows

So können Sie mithilfe eines PowerShell-Skripts für ein Upgrade auf Windows 11 prüfen

So können Sie mithilfe eines PowerShell-Skripts für ein Upgrade auf Windows 11 prüfen

PowerShell ist eine Befehlszeilensprache, die zur Automatisierung der Verwaltung von Windows-Systemen entwickelt wurde und sich hervorragend zum Abrufen von Details auf Systemebene von lokalen oder Remote-Computern eignet. Mit PowerShell können IT-Teams schnell Compliance-Daten von Hunderten von PCs sammeln, Berichte erstellen und wiederholbare Workflows erstellen, die skalierbar sind.

Inhaltsverzeichnis

In diesem Artikel erfahren Sie, wie Sie die Upgrade-kompatibilität für Windows 11 mithilfe eines PowerShell-Skripts überprüfen können.

Systemanforderungen für Windows 11

Für die Installation und Ausführung von Windows 11 sind acht Hardwareanforderungen erforderlich. Dies sind die Mindestsystemanforderungen. Damit Windows 11 jedoch ordnungsgemäß ausgeführt werden kann, sind mehr als diese Mindestanforderungen notwendig.

  • TPM 2.0
  • Secure Boot
  • Moderne UEFI-Firmware
  • Eine kompatible CPU
  • Mindestens 4 GB RAM
  • Mindestens 64 GB freier Speicherplatz
  • DirectX 12-kompatible Grafikkarte
  • Internetverbindung

Testen mit PowerShell

Im Folgenden finden Sie einige einfache Codeschnipsel, mit denen Sie die sieben Anforderungen für Windows 11 überprüfen können (die Internetverbindung wird nicht getestet). Sie können diese Codeschnipsel nach Bedarf einzeln ausführen. Anschließend werde ich sie in ein PowerShell-Skript integrieren, mit dem alle acht Bereiche gleichzeitig getestet werden können.

TPM 2.0

TPM (Trusted Platform Module) ist ein kleiner, dedizierter Sicherheitschip oder eine in CPUs integrierte Funktion, die Sicherheitsfunktionen auf Hardwareebene und kryptografische Funktionen bereitstellt, die für die Ausführung der BitLocker-Verschlüsselung und von Windows Hello erforderlich sind, wodurch die Sicherheit bei der Anmeldung in Windows 11 verbessert wird. TPM 2.0 ist die neueste Version von TPM und bietet erhöhte Sicherheit und verbesserte Leistung.

Wir können WMI verwenden, um PC-Informationen abzufragen und festzustellen, ob auf einem PC ein TPM installiert ist.

# Stellen Sie sicher, dass Sie dies in einer PowerShell-Konsole mit erweiterten Rechten ausführen
Get-CimInstance -Namespace "Root/CIMV2/Security/MicrosoftTpm" -ClassName Win32_Tpm

Screenshot: Powershell Skript

Dieser Test kann jedoch irreführend sein, da das Cmdlet nur dann Daten ausgibt, wenn der PC über einen TPM-Chip verfügt. Der wichtigste Datenpunkt, der aus dieser Liste zu überprüfen ist, ist die führende Zahl im Feld "SpecVersion". Idealerweise sollte die SpecVersion 2.0 oder höher sein, jedoch ist 1.2 die minimal akzeptable Version. Anhand dieser Informationen können wir abfragen, ob ein Computer über ein TPM verfügt, das die Mindestanforderungen von Windows 11 erfüllt.

$TPMSpec = (Get-CimInstance -Namespace "Root/CIMV2/Security/MicrosoftTpm" -ClassName Win32_Tpm).SpecVersion -split ',' | select -first 1
#Testen, ob $TMSpecVersion eine leere Zeichenfolge ist
if ([string]::IsNullOrEmpty($TPMSpec)) {
Write-Output "TPM ist auf dem Computer nicht installiert"
} else {
$Version = [version]$TPMSpec
# TPMSpecVersion überprüfen
If ($Version -ge '1.2') { "TPM ist Win11-kompatibel" } else { "TPM ist installiert, aber nicht Win11-kompatibel" }
}

Screenshot: Überprüfen der TPM-Spezifikationsversion

SecureBoot

Secure Boot verwendet digitale Signaturen, um sicherzustellen, dass nur die Software des Herstellers Ihren Computer starten kann. In Kombination mit TPM ist das System sicherer, da die Integrität des Startvorgangs überprüft und Manipulationen verhindert werden. Mit dem Cmdlet "Confirm-SecureBootUEFI" können Sie schnell überprüfen, ob ein Computer SecureBoot unterstützt. Es gibt ein einfaches Wahr/Falsch-Ergebnis aus.

Confirm-SecureBootUEFI

Format der Festplattenpartition

Windows unterstützt zwei Arten von Festplattenpartitionen: MBR (Master Boot Record) und GPT (GUID Partition Table). Das ältere MBR-Format hat Einschränkungen: Partitionen können maximal 2 TB groß sein und es sind maximal vier Partitionen zulässig.

GPT, das moderne Festplattenpartitionierungssystem, unterstützt größere Laufwerke mit bis zu 128 Partitionen und einer maximalen Partitionsgröße von 9,4 Zettabyte und ist mit UEFI-Firmware kompatibel. Aufgrund der Sicherheitsanforderungen können Sie Windows 11 nicht auf einer MBR-formatierten Festplatte installieren. Windows 11 benötigt UEFI Secure Boot und TPM 2.0, was MBR nicht bietet.

Die Abfrage des Festplattenpartitionstyps ist mit nur einem Cmdlet ganz einfach.

Get-Disk | Select Number, PartitionStyle

Dadurch werden alle im Computer installierten Festplatten und der Partitionstyp jeder Festplatte aufgelistet.

Auch wenn ein Computer über mehrere Laufwerke verfügen kann, müssen Sie nur das Startlaufwerk überprüfen, das in fast allen Fällen Laufwerk 0 sein sollte. Ist dies der Fall, können wir unseren Code vereinfachen, um den Partitionstyp noch genauer zu überprüfen.

(Get-Disk 0).partitionStyle

RAM und Speicherplatz

Die meisten Anforderungen für Windows 11 können recht detailliert sein, aber die Speicher- und Arbeitsspeicheranforderungen sind tatsächlich am einfachsten zu erfüllen. Sie benötigen mindestens 4 GB RAM und 64 GB freien Speicherplatz auf Ihrer Festplatte. Beachten Sie jedoch, dass dies nur die Grundvoraussetzungen sind, um Windows 11 zum Laufen zu bringen. Damit alles reibungslos und schnell funktioniert, benötigen Sie mehr RAM und zusätzlichen Speicherplatz.

Mit PowerShell lassen sich diese beiden Komponenten ganz einfach überprüfen. Eine WMI-Abfrage zeigt Ihnen, wie viel RAM installiert ist. Verwenden Sie anschließend die Funktion MATH::ROUND, um auf die nächste ganze Zahl zu runden. Es ist normal, wenn die Zahl geringer ist als Ihr gesamter RAM-Speicher, da Windows Speicher für seine eigenen Funktionen reserviert. Die angezeigte Zahl entspricht Ihrem nutzbaren RAM-Speicher, aufgerundet oder abgerundet auf die nächste ganze Zahl.

[math]::Round((Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory / 1GB)

Verwenden Sie das Cmdlet "Get-PSDrive", um Informationen darüber zu erhalten, wie viel Speicherplatz verfügbar ist. Auch hier verwende ich die Methode MATH::ROUND, um eine ganze Zahl zurückzugeben.

[math]::Round((Get-PSDrive C).Free / 1GB)

CPU-Überprüfung

Die Überprüfung der CPU-Unterstützung für Windows 11 ist zwar nicht komplex, Sie müssen jedoch die CPU Ihres Computers mit der Kompatibilitätsliste auf der Webseite von Microsoft abgleichen. Dort finden Sie Listen mit unterstützten Prozessoren für AMD-, Intel- und Qualcomm-CPUs.

Überraschenderweise gibt es viele Fälle, in denen Computer zwar über TPM-Chips verfügen, der Prozessor jedoch nicht Windows 11-fähig ist. Sie müssen die Ergebnisse genau beachten und Ihre Ergebnisse mit der neuesten veröffentlichten Liste von Microsoft abgleichen.

(Get-CimInstance -ClassName Win32_Processor).Name

DirectX testen

Windows verwendet DirectX, eine Suite von Microsoft-Tools, um Grafiken und Multimedia-Inhalte wie Spiele, Videos und 3D-Anwendungen zu verarbeiten. Es schließt die Lücke zwischen Software und Hardware und sorgt dafür, dass alles reibungslos funktioniert und gut aussieht.

Windows 11 benötigt DirectX 12, um moderne Grafiken zu unterstützen. Auch wenn Sie keine Computerspiele spielen, macht DirectX 12 Windows schneller und flüssiger. Microsoft setzt diese Anforderung durch, um ein hohes Maß an Grafikleistung auf allen Windows 11-Systemen zu gewährleisten.

Es gibt jedoch keine Möglichkeit, über WMI zu überprüfen, ob eine Grafikkarte DirectX unterstützt. Stattdessen müssen wir die Datei "dxdiag.exe" auf dem Computer aufrufen und dann die von diesem Tool zurückgegebenen Daten analysieren.

$dxdiagOutput = "$env:TEMP\dxdiag_output.txt"

# Generieren Sie einen dxdiag-Bericht (Textformat)
Start-Process -FilePath "dxdiag.exe" -ArgumentList "/t $dxdiagOutput" -Wait

# Verwenden Sie Select-String, um die Zeile mit der DirectX-Version zu finden
$dxLine = Select-String -Path $dxdiagOutput -Pattern "DirectX Version"

if ($dxLine) {
# Extrahieren Sie nur den Zeilentext und bereinigen Sie ihn
$rawLine = $dxLine.Line.Trim()
$version = $rawLine -replace "DirectX Version:\s*", ""

if ($version -match "12") {
"DirectX 12 oder höher wird unterstützt"
} else {
"DirectX 12 nicht erkannt"
}
} else {
"DirectX-Version konnte aus der dxdiag-Ausgabe nicht ermittelt werden"}

Alle Tests in einem einzigen Skript zusammenfassen

Die Code-Schnipsel für jeden der Hardware-Tests sind ein guter Anfang und eignen sich gut, wenn Sie nur gelegentlich einige wenige Bereiche überprüfen müssen. Allerdings wird es schnell mühselig, jede Überprüfung einzeln durchzuführen, insbesondere wenn Sie für Dutzende oder Hunderte von Rechnern verantwortlich sind. Hier kommt die Zusammenfassung Ihres Codes in einem wiederverwendbaren PowerShell-Skript ins Spiel.

Das folgende Skript fasst alle diese Überprüfungen zu einer einzigen, vollständigen Lösung zusammen, die Sie lokal oder remote ausführen können. Es erfasst wichtige Systemanforderungen, gibt die Ergebnisse in einem einfachen Format aus und erleichtert die Erstellung wiederholbarer, automatisierter Überprüfungen in Ihrer gesamten Umgebung. Ganz gleich, ob Sie nur einige wenige Maschinen testen oder sich auf eine größere Einführung vorbereiten, dieser Ansatz spart Ihnen Zeit und reduziert Mutmaßungen.

# Get-Windows11ReadinessReport.ps1
# TPM-Prüfung
$TPMResult = try {
$TPMSpec = (Get-CimInstance -Namespace "Root/CIMV2/Security/MicrosoftTpm" -ClassName Win32_Tpm).SpecVersion -split "," | Select-Object -First 1
if ([string]::IsNullOrEmpty($TPMSpec)) {
"TPM ist auf dem Computer nicht installiert"
} else {
$Version = [version]$TPMSpec
if ($Version -ge "1.2") {
"TPM ist Win11-kompatibel"
} else {
"TPM ist installiert, aber nicht Win11-kompatibel"
}
}
} catch {
"TPM-Prüfung fehlgeschlagen: $_"
}
# Secure Boot-Prüfung
$SecureBoot = try {
Confirm-SecureBootUEFI
} catch {
"Secure Boot-Prüfung fehlgeschlagen oder nicht unterstützt"
}
# Partitionsstil (unter der Annahme, dass Disk 0 die Betriebssystemfestplatte ist)
$PartitionStyle = try {
(Get-Disk 0).PartitionStyle
} catch {
"Partitionsstilprüfung fehlgeschlagen: $_"
}
# Physischer Speicher in GB
$MemoryGB = try {
[math]::Round((Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory / 1GB)
} catch {
"Speicherprüfung fehlgeschlagen: $_"
}
# Freier Speicherplatz auf C: in GB
$DiskFreeGB = try {
[math]::Round((Get-PSDrive C).Free / 1GB)
} catch {
"Überprüfung des Speicherplatzes fehlgeschlagen: $_"
}
# CPU-Modell
$CPUName = try {
(Get-CimInstance -ClassName Win32_Processor).Name
} catch {
"CPU-Überprüfung fehlgeschlagen: $_"
}
# DirectX-Version
$DirectXResult = try {
$dxdiagOutput = "$env:TEMP\dxdiag_output.txt"
Start-Process -FilePath "dxdiag.exe" -ArgumentList "/t $dxdiagOutput" -Wait
$dxLine = Select-String -Path $dxdiagOutput -Pattern "DirectX Version"
if ($dxLine) {
$rawLine = $dxLine.Line.Trim()
$version = $rawLine -replace "DirectX-Version:\s*", ""
if ($version -match ‚12‘) {
"DirectX 12 oder höher wird unterstützt"
} else {
"DirectX 12 nicht erkannt"
}
} else {
"DirectX-Version konnte nicht aus der dxdiag-Ausgabe erkannt werden"
}
} catch {
"DirectX-Prüfung fehlgeschlagen: $_"
}
# Alle Werte in einem benutzerdefinierten Objekt ausgeben
$Report = [PSCustomObject]@{
TPM = $TPMResult
SecureBoot = $SecureBoot
PartitionType = $PartitionStyle
MemoryGB = $MemoryGB
FreeDiskGB = $DiskFreeGB
CPU = $CPUName
DirectX = $DirectXResult
}
# Ergebnis anzeigen
$Report

Um das Skript auszuführen, geben Sie einfach den Pfad zur Datei ein, und es wird ausgeführt. Die Ausgabe sind die Ergebnisse der Tests. Hier sind die Ergebnisse, die auf meinem Laptop ausgeführt wurden.

Das Skript kann mit Invoke-Command auf mehreren Computern ausgeführt werden, wie in diesem Beispiel unten gezeigt. Dieser Screenshot zeigt das Skript für drei Server in meinem Labor. Die Ausgabe kann auf viele verschiedene Arten formatiert werden. In dieser Ansicht werden die Ergebnisse nacheinander aufgelistet.

Weitere Möglichkeiten, für Windows 11 zu überprüfen

Microsoft hat eine Anwendung namens "PC Health Check GUI App" entwickelt, mit der Verbraucher ihre Computer auf ihre Windows 11-Tauglichkeit prüfebn können. Dieses Tool ist jedoch auf Verbraucher ausgerichtet und verfügt nicht über Funktionen auf Unternehmensebene.  SIe können das beispielsweite von der heise.de Webseite herunterladen.

Fazit

Für Systemadministratoren, die keinen Zugriff auf Cloud-Tools wie Microsoft Intune haben, bietet PowerShell eine praktische Möglichkeit, die Kompatibilität mit Windows 11 auf verschiedenen Systemen zu überprüfen. Wir haben alle Hardwareanforderungen für Windows 11 überprüft und Codeausschnitte erstellt, mit denen Administratoren Ad-hoc-Tests durchführen können.

Durch die Kombination dieser Codeausschnitte in einer einzigen Funktion können Sie Ihren Prozess optimieren, den manuellen Aufwand reduzieren und konsistente Überprüfungen auf mehreren Computern durchführen. Ganz gleich, ob Sie ein kleines Netzwerk verwalten oder eine große Migration planen – Sie verfügen nun über die Tools, um Ihre Umgebung zu bewerten und die Frist für das Upgrade auf Windows 11 einzuhalten.

Diese Artikel könnte Sie ebenfalls interessieren: