Set-StrictMode -Version Latest $ErrorActionPreference = "Stop" $ExpectedDiskNumber = 0 $ExpectedFriendlyName = "INTEL SSDSC2BW180A3L" $ExpectedSerialNumber = "CVCV3105053K180EGN" $MinSizeGB = 160 $MaxSizeGB = 180 function Assert-Admin { $Identity = [Security.Principal.WindowsIdentity]::GetCurrent() $Principal = [Security.Principal.WindowsPrincipal]::new($Identity) if (-not $Principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { throw "Dieses Skript muss in PowerShell als Administrator ausgefuehrt werden." } } Assert-Admin $Disk = Get-Disk -Number $ExpectedDiskNumber $SizeGB = [math]::Round($Disk.Size / 1GB, 2) Write-Host "Zieldatentraeger:" $Disk | Select-Object Number, FriendlyName, SerialNumber, HealthStatus, OperationalStatus, @{Name="SizeGB";Expression={[math]::Round($_.Size/1GB,2)}}, PartitionStyle | Format-Table -AutoSize Write-Host "Aktuelle Partitionen auf Datentraeger ${ExpectedDiskNumber}:" Get-Partition -DiskNumber $ExpectedDiskNumber | Sort-Object PartitionNumber | Select-Object DiskNumber, PartitionNumber, DriveLetter, Type, @{Name="SizeGB";Expression={[math]::Round($_.Size/1GB,3)}} | Format-Table -AutoSize if ($Disk.FriendlyName -ne $ExpectedFriendlyName) { throw "Abbruch: FriendlyName passt nicht. Erwartet '$ExpectedFriendlyName', gefunden '$($Disk.FriendlyName)'." } if ($Disk.SerialNumber -ne $ExpectedSerialNumber) { throw "Abbruch: SerialNumber passt nicht. Erwartet '$ExpectedSerialNumber', gefunden '$($Disk.SerialNumber)'." } if ($SizeGB -lt $MinSizeGB -or $SizeGB -gt $MaxSizeGB) { throw "Abbruch: Groesse passt nicht. Erwartet ca. 167 GB, gefunden $SizeGB GB." } $SystemPartitions = Get-Partition -DiskNumber $ExpectedDiskNumber | Where-Object { $_.IsBoot -or $_.IsSystem -or $_.IsActive } if ($SystemPartitions) { throw "Abbruch: Datentraeger $ExpectedDiskNumber enthaelt Boot/System/Aktiv-Partitionen." } Write-Host "" Write-Host "WARNUNG: Datentraeger 0 wird jetzt komplett geleert." Write-Host "Das betrifft die alte Windows-SSD mit aktuell D: und Recovery-Partitionen." Write-Host "Andere Datentraeger werden nicht angefasst." Write-Host "" $Confirmation = Read-Host "Tippe exakt LEEREN um fortzufahren" if ($Confirmation -ne "LEEREN") { throw "Abbruch: Bestaetigung wurde nicht eingegeben." } Clear-Disk -Number $ExpectedDiskNumber -RemoveData -RemoveOEM -Confirm:$false Write-Host "" Write-Host "Datentraeger $ExpectedDiskNumber wurde geleert." Write-Host "Ergebnis:" Get-Disk -Number $ExpectedDiskNumber | Select-Object Number, FriendlyName, HealthStatus, OperationalStatus, @{Name="SizeGB";Expression={[math]::Round($_.Size/1GB,2)}}, PartitionStyle | Format-Table -AutoSize Get-Partition -DiskNumber $ExpectedDiskNumber -ErrorAction SilentlyContinue | Format-Table -AutoSize Write-Host "" Write-Host "Naechster Schritt: Vom Windows-USB-Stick booten und Windows auf den nicht zugeordneten Speicher von Datentraeger 0 installieren."