mit PowerShell die physikalischen Sektorgrössen eine NVMe SSD auslesen

Hier ist ein zuverlässiges PowerShell-Snippet, das die physikalische Sektorgrösse (Physical Sector Size / Logical Block Size) einer NVMe-SSD ausliest – also typischerweise 512 Bytes oder 4096 Bytes (4K native).


Methode 1: Über WMI/CIM (funktioniert ab Windows 8/2012 und höher, auch auf NVMe)

PowershellScript:

# Alle NVMe-Laufwerke anzeigen mit physikalischer und logischer Sektorgrösse

Get-Disk | Where-Object BusType -eq "NVMe" | ForEach-Object {

  $diskNumber = $_.Number

 

  # Physikalische und logische Sektorgröße direkt aus dem Storage-Stack holen

  $sectorInfo = Get-PhysicalDisk | Where-Object DeviceId -eq $diskNumber |

                Select-Object FriendlyName,

                              PhysicalSectorSize,

                              LogicalSectorSize,

                              Size,

                              MediaType

  [PSCustomObject]@{

      DiskNumber         = $diskNumber

      FriendlyName       = $sectorInfo.FriendlyName

      PhysicalSectorSize = $sectorInfo.PhysicalSectorSize

      LogicalSectorSize   = $sectorInfo.LogicalSectorSize

      SizeGB             = [math]::Round($sectorInfo.Size / 1GB, 2)

      MediaType           = $sectorInfo.MediaType

  }

} | Format-Table -AutoSize


Methode 2: Noch detaillierter mit Storage-Firmware-Infos (sehr genau bei NVMe)

Powershell Script:

Get-Disk | Where-Object BusType -eq "NVMe" | ForEach-Object {

  $disk = $_

  $part = Get-Partition -DiskNumber $disk.Number -ErrorAction SilentlyContinue | Select-Object -First 1

  $driveLetter = if($part) { $part.DriveLetter + ":" } else { "Keine Partition" }

  # Direkter Zugriff auf die Storage-Eigenschaften

  $physDisk = Get-StorageAdvancedProperty -PhysicalDisk (Get-PhysicalDisk | Where-Object DeviceId -eq $disk.Number) -ErrorAction SilentlyContinue

  [PSCustomObject]@{

      Disk           = $disk.Number

      Modell         = $disk.FriendlyName

      Laufwerk       = $driveLetter

      LogicalSector   = $disk.LogicalSectorSize

      PhysicalSector = $disk.PhysicalSectorSize   # <-- Das ist die echte physikalische Sektorgröße (meist 4096)

      SizeGB         = [math]::Round($disk.Size / 1GB, 2)

      BusType         = $disk.BusType

  }

} | Format-Table -AutoSize


Methode 3: Nur eine bestimmte NVMe-SSD (z. B. Disk 0)

Powershell Script:

$disk = 0 # Hier Disk-Nummer anpassen

(Get-PhysicalDisk | Where-Object DeviceId -eq $disk).PhysicalSectorSize

Typische Ausgabe bei einer modernen 4K-native NVMe-SSD:

LogicalSectorSize : 512

PhysicalSectorSize : 4096

Das bedeutet: Windows sieht 512-Byte-Sektoren (512e), aber die SSD arbeitet intern mit 4096-Byte-Blöcken → wichtig für Performance-Tuning, Alignment, etc.

Falls du das Ganze als fertige Funktion haben willst:

Powershell Script:

function Get-NVMePhysicalSectorSize {

  Get-PhysicalDisk | Where-Object BusType -eq "NVMe" |

  Select-Object FriendlyName,

                @{Name="LogicalSectorSize"; Expression={ $_.LogicalSectorSize }},

                @{Name="PhysicalSectorSize"; Expression={ $_.PhysicalSectorSize }},

                @{Name="SizeGB";             Expression={ [math]::Round($_.Size/1GB,2) }}

}


# Aufruf:

Get-NVMePhysicalSectorSize | Format-Table -AutoSize


Funktioniert auf Windows 10/11 und Server 2016+ ohne zusätzliche Tools. 

anhängende Datei(en)
mit PowerShell die physikalischen Sektorgrössen eine NVMe SSD auslesen.pdf
404kb
Tags