Windows-Testzeitraum anzeigen und verlängern
Für Evaluierungs- und Testinstallationen: zeigt Lizenzstatus, verbleibende Testzeit und wie oft der Zeitraum noch zurückgesetzt werden kann, und setzt ihn nach Rückfrage zurück (wie slmgr /rearm). Bei aktivierten Vollversionen bricht das Skript ab. Benötigt Administratorrechte, danach Neustart.
SHA-256:
ee5ba204f39a2e0a82724920440f0d9aaee458c183e534d852db6176ece8db32 Code
So sieht die Datei aus, die Sie herunterladen (95 Zeilen). Die Kommentare oben im Skript erklären, was es tut.
<# : Friederich-IT - Windows-Testzeitraum anzeigen und verlaengern
@echo off
setlocal
chcp 65001 >nul
title Windows-Testzeitraum - Friederich-IT
set "FIT_SELF=%~f0"
powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "iex ([IO.File]::ReadAllText($env:FIT_SELF,[Text.Encoding]::UTF8))"
exit /b %errorlevel%
#>
# ==========================================================================
# Windows-Testzeitraum anzeigen und verlängern Version 2.0, Oktober 2026
# https://friederich-it.de/downloads
#
# Zeigt Lizenzstatus, verbleibende Testzeit und wie oft der Testzeitraum
# noch zurückgesetzt werden darf ("Rearm"). Nur nach ausdrücklicher
# Bestätigung wird er zurückgesetzt; danach ist ein Neustart nötig.
# Gedacht für Test-, Schulungs- und Evaluierungsinstallationen.
# Ein aktiviertes Windows wird nicht verändert.
# Benötigt Administratorrechte (werden beim Start angefordert).
# Ersetzt das alte "slmgr -rearm"-Skript und kommt ohne VBScript aus.
# ==========================================================================
$ErrorActionPreference = 'Stop'
try { [Console]::OutputEncoding = [Text.Encoding]::UTF8 } catch {}
function Wait-Ende { Write-Host ''; Write-Host ' Taste drücken zum Beenden ...' -ForegroundColor DarkGray; [void][Console]::ReadKey($true); exit }
function Read-JaNein([string]$frage) {
while ($true) {
$a = (Read-Host " $frage (j/n)").Trim().ToLower()
if ($a -in 'j', 'ja', 'y', 'yes') { return $true }
if ($a -in 'n', 'nein', 'no', '') { return $false }
Write-Host ' Bitte j oder n eingeben.' -ForegroundColor Yellow
}
}
$admin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (-not $admin) {
Write-Host ' Administratorrechte werden angefordert ...'
try { Start-Process -FilePath $env:FIT_SELF -Verb RunAs | Out-Null }
catch { Write-Host ' Abgebrochen: Ohne Administratorrechte geht es nicht.' -ForegroundColor Yellow; Wait-Ende }
exit
}
Write-Host ''
Write-Host ' Windows-Testzeitraum' -ForegroundColor Cyan
Write-Host ' ====================' -ForegroundColor Cyan
Write-Host ' Lizenzdaten werden gelesen ...' -ForegroundColor DarkGray
try {
$svc = Get-CimInstance SoftwareLicensingService
$prod = Get-CimInstance SoftwareLicensingProduct -Filter "ApplicationID='55c92734-d682-4d71-983e-d6ec3f16059f' AND PartialProductKey IS NOT NULL" | Select-Object -First 1
} catch { Write-Host " Fehler beim Lesen der Lizenzdaten: $($_.Exception.Message)" -ForegroundColor Red; Wait-Ende }
if (-not $prod) { Write-Host ' Es ist kein Windows-Produktschlüssel installiert.' -ForegroundColor Yellow; Wait-Ende }
$status = switch ([int]$prod.LicenseStatus) {
0 { 'nicht lizenziert' } 1 { 'aktiviert' } 2 { 'Testphase, nicht aktiviert' } 3 { 'Testphase abgelaufen' }
4 { 'Nachfrist (Echtheitsprüfung)' } 5 { 'nicht aktiviert (Hinweismodus)' } 6 { 'verlängerte Testphase' } default { 'unbekannt' }
}
$eval = $prod.Description -match 'TIMEBASED_EVAL'
$rest = [int]$prod.GracePeriodRemaining
$restText = if ($rest -gt 0) { '{0} Tage, {1} Stunden' -f [math]::Floor($rest / 1440), [math]::Floor(($rest % 1440) / 60) } else { '–' }
$rearm = [int]$svc.RemainingWindowsReArmCount
Write-Host (' {0,-28}{1}' -f 'Produkt:', $prod.Name)
Write-Host (' {0,-28}{1}' -f 'Status:', $(if ($eval) { 'Evaluierungsversion' } else { $status }))
if ($eval -and $prod.EvaluationEndDate -and $prod.EvaluationEndDate.Year -gt 2000) { Write-Host (' {0,-28}{1}' -f 'Testversion läuft ab:', $prod.EvaluationEndDate.ToString('dd.MM.yyyy HH:mm')) }
Write-Host (' {0,-28}{1}' -f 'Verbleibende Testzeit:', $restText)
Write-Host (' {0,-28}{1}' -f 'Mögliche Zurücksetzungen:', $rearm)
Write-Host ''
if ([int]$prod.LicenseStatus -eq 1 -and -not $eval) {
Write-Host ' Windows ist aktiviert. Ein Zurücksetzen ist weder nötig noch sinnvoll.' -ForegroundColor Green
Wait-Ende
}
if ($rearm -le 0) {
Write-Host ' Der Testzeitraum kann nicht mehr zurückgesetzt werden (keine Zurücksetzungen übrig).' -ForegroundColor Yellow
Write-Host ' Abhilfe: Windows mit einem gültigen Schlüssel aktivieren oder neu installieren.'
Wait-Ende
}
Write-Host ' Beim Zurücksetzen beginnt die Testzeit neu. Danach muss Windows neu starten.' -ForegroundColor Yellow
Write-Host ' Nur für Test- und Evaluierungsinstallationen gedacht; beachten Sie die Lizenzbedingungen.' -ForegroundColor Yellow
Write-Host ''
if (-not (Read-JaNein 'Testzeitraum jetzt zurücksetzen?')) { Write-Host ' Nichts geändert.'; Wait-Ende }
try {
$r = Invoke-CimMethod -InputObject $svc -MethodName ReArmWindows
if ($r.ReturnValue -ne 0) { throw ('Fehlercode 0x{0:X8}' -f [uint32]$r.ReturnValue) }
Write-Host ''
Write-Host ' Erledigt. Der Testzeitraum wird nach dem Neustart neu berechnet.' -ForegroundColor Green
} catch {
Write-Host " Zurücksetzen fehlgeschlagen: $($_.Exception.Message)" -ForegroundColor Red
Write-Host ' (0xC004D307 bedeutet: Die maximale Anzahl an Zurücksetzungen ist erreicht.)'
Wait-Ende
}
Write-Host ''
if (Read-JaNein 'Jetzt neu starten?') { Restart-Computer -Force } else { Write-Host ' Bitte später neu starten.'; Wait-Ende }