{"id":178,"date":"2025-12-21T02:00:03","date_gmt":"2025-12-21T02:00:03","guid":{"rendered":"https:\/\/windows-vps.org\/blog\/?p=178"},"modified":"2026-11-01T22:05:55","modified_gmt":"2026-11-01T22:05:55","slug":"windows-server-evaluation-180-day-rearm-activation-math","status":"publish","type":"post","link":"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/","title":{"rendered":"Windows Server Evaluation: The 180-Day Window and Rearm Math"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n\n<p class=\"wp-block-paragraph\">If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n\n<p class=\"wp-block-paragraph\">The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n\n<!-- \/wp:post-content -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:heading --><!-- \/wp:heading --><!-- \/wp:heading -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:heading --><!-- wp:post-content --><!-- wp:paragraph -->\n<p>A Windows Server Evaluation install starts a 180-day clock the moment it first boots, and that clock is not a polite reminder. At day 181 the box reboots hourly, shows a desktop watermark, and stops accepting most updates. Ten reboots an hour is enough to break any service that expects to stay up, which is why the grace period has to be planned rather than discovered.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The counter lives in the software licensing service, not in the registry date you can see in <code>winver<\/code>. Reading it properly takes one command, and the number it returns is the only figure worth planning against. Everything else \u2014 the marketing &#8220;180 days&#8221;, the rearm folklore, the blog posts promising two years \u2014 is secondary to that output.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For teams standing up a staging box on a <a href=\"https:\/\/windows-vps.org\/\">Windows VPS<\/a>, the eval image is often the fastest way to a working Server 2022 build with no key. The cost is a deadline, and a migration that crosses that deadline badly costs more than the licence would have.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:post-content -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:heading --><!-- \/wp:heading --><!-- wp:post-content --><!-- wp:paragraph -->\n<p>A Windows Server Evaluation install starts a 180-day clock the moment it first boots, and that clock is not a polite reminder. At day 181 the box reboots hourly, shows a desktop watermark, and stops accepting most updates. Ten reboots an hour is enough to break any service that expects to stay up, which is why the grace period has to be planned rather than discovered.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The counter lives in the software licensing service, not in the registry date you can see in <code>winver<\/code>. Reading it properly takes one command, and the number it returns is the only figure worth planning against. Everything else \u2014 the marketing &#8220;180 days&#8221;, the rearm folklore, the blog posts promising two years \u2014 is secondary to that output.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For teams standing up a staging box on a <a href=\"https:\/\/windows-vps.org\/\">Windows VPS<\/a>, the eval image is often the fastest way to a working Server 2022 build with no key. The cost is a deadline, and a migration that crosses that deadline badly costs more than the licence would have.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:heading -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading --><!-- wp:post-content --><!-- wp:paragraph -->\n<p>A Windows Server Evaluation install starts a 180-day clock the moment it first boots, and that clock is not a polite reminder. At day 181 the box reboots hourly, shows a desktop watermark, and stops accepting most updates. Ten reboots an hour is enough to break any service that expects to stay up, which is why the grace period has to be planned rather than discovered.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The counter lives in the software licensing service, not in the registry date you can see in <code>winver<\/code>. Reading it properly takes one command, and the number it returns is the only figure worth planning against. Everything else \u2014 the marketing &#8220;180 days&#8221;, the rearm folklore, the blog posts promising two years \u2014 is secondary to that output.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For teams standing up a staging box on a <a href=\"https:\/\/windows-vps.org\/\">Windows VPS<\/a>, the eval image is often the fastest way to a working Server 2022 build with no key. The cost is a deadline, and a migration that crosses that deadline badly costs more than the licence would have.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading --><!-- wp:post-content --><!-- wp:paragraph -->\n<p>A Windows Server Evaluation install starts a 180-day clock the moment it first boots, and that clock is not a polite reminder. At day 181 the box reboots hourly, shows a desktop watermark, and stops accepting most updates. Ten reboots an hour is enough to break any service that expects to stay up, which is why the grace period has to be planned rather than discovered.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The counter lives in the software licensing service, not in the registry date you can see in <code>winver<\/code>. Reading it properly takes one command, and the number it returns is the only figure worth planning against. Everything else \u2014 the marketing &#8220;180 days&#8221;, the rearm folklore, the blog posts promising two years \u2014 is secondary to that output.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For teams standing up a staging box on a <a href=\"https:\/\/windows-vps.org\/\">Windows VPS<\/a>, the eval image is often the fastest way to a working Server 2022 build with no key. The cost is a deadline, and a migration that crosses that deadline badly costs more than the licence would have.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading --><!-- wp:post-content --><!-- wp:paragraph -->\n<p>A Windows Server Evaluation install starts a 180-day clock the moment it first boots, and that clock is not a polite reminder. At day 181 the box reboots hourly, shows a desktop watermark, and stops accepting most updates. Ten reboots an hour is enough to break any service that expects to stay up, which is why the grace period has to be planned rather than discovered.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The counter lives in the software licensing service, not in the registry date you can see in <code>winver<\/code>. Reading it properly takes one command, and the number it returns is the only figure worth planning against. Everything else \u2014 the marketing &#8220;180 days&#8221;, the rearm folklore, the blog posts promising two years \u2014 is secondary to that output.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For teams standing up a staging box on a <a href=\"https:\/\/windows-vps.org\/\">Windows VPS<\/a>, the eval image is often the fastest way to a working Server 2022 build with no key. The cost is a deadline, and a migration that crosses that deadline badly costs more than the licence would have.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading --><!-- wp:post-content --><!-- wp:paragraph -->\n<p>A Windows Server Evaluation install starts a 180-day clock the moment it first boots, and that clock is not a polite reminder. At day 181 the box reboots hourly, shows a desktop watermark, and stops accepting most updates. Ten reboots an hour is enough to break any service that expects to stay up, which is why the grace period has to be planned rather than discovered.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The counter lives in the software licensing service, not in the registry date you can see in <code>winver<\/code>. Reading it properly takes one command, and the number it returns is the only figure worth planning against. Everything else \u2014 the marketing &#8220;180 days&#8221;, the rearm folklore, the blog posts promising two years \u2014 is secondary to that output.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For teams standing up a staging box on a <a href=\"https:\/\/windows-vps.org\/\">Windows VPS<\/a>, the eval image is often the fastest way to a working Server 2022 build with no key. The cost is a deadline, and a migration that crosses that deadline badly costs more than the licence would have.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:heading --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading --><!-- wp:post-content --><!-- wp:paragraph -->\n<p>A Windows Server Evaluation install starts a 180-day clock the moment it first boots, and that clock is not a polite reminder. At day 181 the box reboots hourly, shows a desktop watermark, and stops accepting most updates. Ten reboots an hour is enough to break any service that expects to stay up, which is why the grace period has to be planned rather than discovered.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The counter lives in the software licensing service, not in the registry date you can see in <code>winver<\/code>. Reading it properly takes one command, and the number it returns is the only figure worth planning against. Everything else \u2014 the marketing &#8220;180 days&#8221;, the rearm folklore, the blog posts promising two years \u2014 is secondary to that output.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For teams standing up a staging box on a <a href=\"https:\/\/windows-vps.org\/\">Windows VPS<\/a>, the eval image is often the fastest way to a working Server 2022 build with no key. The cost is a deadline, and a migration that crosses that deadline badly costs more than the licence would have.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:heading -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading --><!-- wp:post-content --><!-- wp:paragraph -->\n<p>A Windows Server Evaluation install starts a 180-day clock the moment it first boots, and that clock is not a polite reminder. At day 181 the box reboots hourly, shows a desktop watermark, and stops accepting most updates. Ten reboots an hour is enough to break any service that expects to stay up, which is why the grace period has to be planned rather than discovered.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The counter lives in the software licensing service, not in the registry date you can see in <code>winver<\/code>. Reading it properly takes one command, and the number it returns is the only figure worth planning against. Everything else \u2014 the marketing &#8220;180 days&#8221;, the rearm folklore, the blog posts promising two years \u2014 is secondary to that output.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For teams standing up a staging box on a <a href=\"https:\/\/windows-vps.org\/\">Windows VPS<\/a>, the eval image is often the fastest way to a working Server 2022 build with no key. The cost is a deadline, and a migration that crosses that deadline badly costs more than the licence would have.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading --><!-- wp:post-content --><!-- wp:paragraph -->\n<p>A Windows Server Evaluation install starts a 180-day clock the moment it first boots, and that clock is not a polite reminder. At day 181 the box reboots hourly, shows a desktop watermark, and stops accepting most updates. Ten reboots an hour is enough to break any service that expects to stay up, which is why the grace period has to be planned rather than discovered.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The counter lives in the software licensing service, not in the registry date you can see in <code>winver<\/code>. Reading it properly takes one command, and the number it returns is the only figure worth planning against. Everything else \u2014 the marketing &#8220;180 days&#8221;, the rearm folklore, the blog posts promising two years \u2014 is secondary to that output.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For teams standing up a staging box on a <a href=\"https:\/\/windows-vps.org\/\">Windows VPS<\/a>, the eval image is often the fastest way to a working Server 2022 build with no key. The cost is a deadline, and a migration that crosses that deadline badly costs more than the licence would have.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading --><!-- wp:post-content --><!-- wp:paragraph -->\n<p>A Windows Server Evaluation install starts a 180-day clock the moment it first boots, and that clock is not a polite reminder. At day 181 the box reboots hourly, shows a desktop watermark, and stops accepting most updates. Ten reboots an hour is enough to break any service that expects to stay up, which is why the grace period has to be planned rather than discovered.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The counter lives in the software licensing service, not in the registry date you can see in <code>winver<\/code>. Reading it properly takes one command, and the number it returns is the only figure worth planning against. Everything else \u2014 the marketing &#8220;180 days&#8221;, the rearm folklore, the blog posts promising two years \u2014 is secondary to that output.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For teams standing up a staging box on a <a href=\"https:\/\/windows-vps.org\/\">Windows VPS<\/a>, the eval image is often the fastest way to a working Server 2022 build with no key. The cost is a deadline, and a migration that crosses that deadline badly costs more than the licence would have.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:heading --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading --><!-- wp:post-content --><!-- wp:paragraph -->\n<p>A Windows Server Evaluation install starts a 180-day clock the moment it first boots, and that clock is not a polite reminder. At day 181 the box reboots hourly, shows a desktop watermark, and stops accepting most updates. Ten reboots an hour is enough to break any service that expects to stay up, which is why the grace period has to be planned rather than discovered.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The counter lives in the software licensing service, not in the registry date you can see in <code>winver<\/code>. Reading it properly takes one command, and the number it returns is the only figure worth planning against. Everything else \u2014 the marketing &#8220;180 days&#8221;, the rearm folklore, the blog posts promising two years \u2014 is secondary to that output.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For teams standing up a staging box on a <a href=\"https:\/\/windows-vps.org\/\">Windows VPS<\/a>, the eval image is often the fastest way to a working Server 2022 build with no key. The cost is a deadline, and a migration that crosses that deadline badly costs more than the licence would have.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:heading -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading --><!-- wp:post-content --><!-- wp:paragraph -->\n<p>A Windows Server Evaluation install starts a 180-day clock the moment it first boots, and that clock is not a polite reminder. At day 181 the box reboots hourly, shows a desktop watermark, and stops accepting most updates. Ten reboots an hour is enough to break any service that expects to stay up, which is why the grace period has to be planned rather than discovered.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The counter lives in the software licensing service, not in the registry date you can see in <code>winver<\/code>. Reading it properly takes one command, and the number it returns is the only figure worth planning against. Everything else \u2014 the marketing &#8220;180 days&#8221;, the rearm folklore, the blog posts promising two years \u2014 is secondary to that output.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For teams standing up a staging box on a <a href=\"https:\/\/windows-vps.org\/\">Windows VPS<\/a>, the eval image is often the fastest way to a working Server 2022 build with no key. The cost is a deadline, and a migration that crosses that deadline badly costs more than the licence would have.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading --><!-- wp:post-content --><!-- wp:paragraph -->\n<p>A Windows Server Evaluation install starts a 180-day clock the moment it first boots, and that clock is not a polite reminder. At day 181 the box reboots hourly, shows a desktop watermark, and stops accepting most updates. Ten reboots an hour is enough to break any service that expects to stay up, which is why the grace period has to be planned rather than discovered.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The counter lives in the software licensing service, not in the registry date you can see in <code>winver<\/code>. Reading it properly takes one command, and the number it returns is the only figure worth planning against. Everything else \u2014 the marketing &#8220;180 days&#8221;, the rearm folklore, the blog posts promising two years \u2014 is secondary to that output.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For teams standing up a staging box on a <a href=\"https:\/\/windows-vps.org\/\">Windows VPS<\/a>, the eval image is often the fastest way to a working Server 2022 build with no key. The cost is a deadline, and a migration that crosses that deadline badly costs more than the licence would have.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:heading --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading --><!-- wp:post-content --><!-- wp:paragraph -->\n<p>A Windows Server Evaluation install starts a 180-day clock the moment it first boots, and that clock is not a polite reminder. At day 181 the box reboots hourly, shows a desktop watermark, and stops accepting most updates. Ten reboots an hour is enough to break any service that expects to stay up, which is why the grace period has to be planned rather than discovered.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The counter lives in the software licensing service, not in the registry date you can see in <code>winver<\/code>. Reading it properly takes one command, and the number it returns is the only figure worth planning against. Everything else \u2014 the marketing &#8220;180 days&#8221;, the rearm folklore, the blog posts promising two years \u2014 is secondary to that output.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For teams standing up a staging box on a <a href=\"https:\/\/windows-vps.org\/\">Windows VPS<\/a>, the eval image is often the fastest way to a working Server 2022 build with no key. The cost is a deadline, and a migration that crosses that deadline badly costs more than the licence would have.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:heading -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading --><!-- wp:post-content --><!-- wp:paragraph -->\n<p>A Windows Server Evaluation install starts a 180-day clock the moment it first boots, and that clock is not a polite reminder. At day 181 the box reboots hourly, shows a desktop watermark, and stops accepting most updates. Ten reboots an hour is enough to break any service that expects to stay up, which is why the grace period has to be planned rather than discovered.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The counter lives in the software licensing service, not in the registry date you can see in <code>winver<\/code>. Reading it properly takes one command, and the number it returns is the only figure worth planning against. Everything else \u2014 the marketing &#8220;180 days&#8221;, the rearm folklore, the blog posts promising two years \u2014 is secondary to that output.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For teams standing up a staging box on a <a href=\"https:\/\/windows-vps.org\/\">Windows VPS<\/a>, the eval image is often the fastest way to a working Server 2022 build with no key. The cost is a deadline, and a migration that crosses that deadline badly costs more than the licence would have.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content --><!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:heading --><!-- \/wp:heading -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:heading --><!-- wp:post-content --><!-- wp:paragraph -->\n<p>A Windows Server Evaluation install starts a 180-day clock the moment it first boots, and that clock is not a polite reminder. At day 181 the box reboots hourly, shows a desktop watermark, and stops accepting most updates. Ten reboots an hour is enough to break any service that expects to stay up, which is why the grace period has to be planned rather than discovered.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The counter lives in the software licensing service, not in the registry date you can see in <code>winver<\/code>. Reading it properly takes one command, and the number it returns is the only figure worth planning against. Everything else \u2014 the marketing &#8220;180 days&#8221;, the rearm folklore, the blog posts promising two years \u2014 is secondary to that output.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>For teams standing up a staging box on a <a href=\"https:\/\/windows-vps.org\/\">Windows VPS<\/a>, the eval image is often the fastest way to a working Server 2022 build with no key. The cost is a deadline, and a migration that crosses that deadline badly costs more than the licence would have.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Reading the clock correctly<\/h2>\n<!-- wp:paragraph -->\n<p>Run <code>slmgr \/dlv<\/code> in an elevated prompt. Look at the &#8220;Remaining Windows rearm count&#8221; and &#8220;Time remaining&#8221; lines. Time remaining is in minutes and it decrements whether or not the VM is running \u2014 it is wall-clock, not powered-on time, so a suspended instance still burns days.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>A box reporting 259200 minutes is at day zero. When it drops under 43200 (30 days) you should already have the licence in hand. Under 10080 it is a page-one incident for whoever owns the workload, because the hourly reboot window starts at expiry, not at a warning you can snooze.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>slmgr \/dlv\n# key lines:\n#   Time remaining: 259200 minute(s)\n#   Remaining Windows rearm count: 6\n# quick check without the dialog\ncscript \/\/nologo C:\\Windows\\System32\\slmgr.vbs \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Rearm limits, per SKU<\/h2>\n<!-- wp:paragraph -->\n<p>Rearm resets the 180-day counter. The number of times you may rearm is fixed per SKU and is visible in the same <code>\/dlv<\/code> output. Standard and Datacenter evaluation images commonly ship with a small remaining rearm count \u2014 often six for retail media, fewer on OEM-derived images \u2014 and each rearm consumes one.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Do not assume a rearm is available just because the command exists. If the count reads zero, <code>slmgr \/rearm<\/code> returns an error and reboots the box for nothing. Check counts before relying on them, and never let a scheduled rearm script run blind at 02:00 on a production host.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Action<\/th><th>Effect on clock<\/th><th>Reboot<\/th><th>Limit<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial activation<\/td><td>Starts 180 days<\/td><td>No<\/td><td>Once<\/td><td>Set at build time<\/td><\/tr><tr><td><code>slmgr \/rearm<\/code><\/td><td>Resets to 180 days<\/td><td>Yes<\/td><td>Per-SKU count<\/td><td>Check count first<\/td><\/tr><tr><td>Disk restore \/ snapshot revert<\/td><td>No reset<\/td><td>No<\/td><td>\u2014<\/td><td>Clock keeps running<\/td><\/tr><tr><td>Sysprep generalize<\/td><td>Resets activation state<\/td><td>Yes<\/td><td>1\u20133 typically<\/td><td>Breaks some app configs<\/td><\/tr><tr><td>Insert licence key<\/td><td>Converts to retail<\/td><td>Yes (recommended)<\/td><td>1<\/td><td>No reinstall needed<\/td><\/tr><tr><td>Expiry reached<\/td><td>Hourly reboot<\/td><td>Hourly<\/td><td>\u2014<\/td><td>Logs stop, apps die<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Two rows deserve a note. A snapshot revert does not give you the clock back: the licence service reads the tick count from the guest&#8217;s own store, and rolling back to a day-20 image after 100 days of uptime restores day-20 files but not day-20 licensing state, because the sealed machine identifier and the rearm counter travel with the disk. The same applies to a clone \u2014 a copied VHDX inherits the counter, so two boxes built from one eval image share the same deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">What expiry actually does<\/h2>\n<!-- wp:paragraph -->\n<p>The hourly shutdown starts on the hour boundary and the system cannot log you out gracefully. Services get the standard shutdown notification, agents that buffer to disk survive, agents that write straight to a remote API lose the in-flight second. Monitoring pages at roughly one per hour, forever.<\/p>\n<!-- wp:paragraph -->\n<p>Activation also fails, so Windows Update stops installing new patches and the licence notification appears on every interactive sign-in. The workload keeps running between reboots \u2014 this is not a lockout \u2014 but the availability profile is that of a machine with a power fault.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Converting without reinstalling<\/h2>\n<!-- wp:paragraph -->\n<p>You can move an evaluation install to a licensed one in place. Run <code>DISM \/online \/Set-Edition:ServerStandard \/ProductKey:XXXXX-... \/AcceptEula<\/code> with a valid KMS client or retail key, then reboot. The filesystem, apps, IIS sites and registry stay where they are.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Two caveats. The edition key must match the edition family you are converting to \u2014 Standard keys will not lift a Datacenter image. And on some builds the conversion fails with error 50 or 0x80070490 unless pending updates are applied first, so run <code>sfc \/scannow<\/code> and finish Windows Update before attempting it.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># order that fails least often\nslmgr \/ipk <KMS-or-retail-key>\nDISM \/online \/Set-Edition:ServerStandard \/ProductKey:<key> \/AcceptEula\nRestart-Computer\nslmgr \/ato\nslmgr \/xpr<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Planning a migration across the deadline<\/h2>\n<!-- wp:paragraph -->\n<p>If the eval box is temporary, treat day 150 as the cutover date regardless of what you promised the business. Image it, build the licensed target, and cut over while both boxes are healthy \u2014 not on the morning the hourly reboots start and every decision is made under pressure.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Snapshot before any conversion attempt, because a failed <code>Set-Edition<\/code> can leave the image in a state that boots but refuses activation. Keep the licence key in the password manager, not in a wiki page the one person who left can no longer read.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":2} -->\n<h2 class=\"wp-block-heading\">Why &#8220;two years of eval&#8221; is wrong<\/h2>\n<!-- wp:paragraph -->\n<p>The claim comes from multiplying 180 days by a rearm count. It assumes every rearm succeeds, that activation state survives each reboot, and that nothing else resets the counter \u2014 three assumptions that break in a VM that gets restored from snapshot. Use the number that <code>\/dlv<\/code> reports today, subtract 30 days, and treat that as the real deadline.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>If eval is a stopgap, the cheapest fix is usually a licensed image at build time rather than a heroics conversion later. Check <a href=\"https:\/\/windows-vps.org\/\">which Windows VPS plans ship a licensed image<\/a> before you commit 180 days of config work to an install that expires on a fixed date.<\/p>\n<!-- \/wp:paragraph -->\n<!-- \/wp:post-content --><!-- \/wp:post-content -->","protected":false},"excerpt":{"rendered":"<p>If you\u2019re considering hosting solutions for your business or personal projects, you might be wondering, \u201cDo Windows VPS?\u201d The answer is a resounding yes. Windows Virtual Private Servers (VPS) offer an excellent way to enjoy the benefits of a dedicated server environment without the hefty price tag. In this guide, we\u2019ll explore what Windows VPS is, its advantages, and how to choose the right provider for your needs. For more insights and options, check out\u00a0Windows VPS.<\/p>\n","protected":false},"author":1,"featured_media":179,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":1,"footnotes":""},"categories":[],"tags":[],"class_list":["post-178","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Windows Server Evaluation: The 180-Day Window and Rearm Math - Windows VPS Blog<\/title>\n<meta name=\"description\" content=\"If you\u2019re considering hosting solutions for your business or personal projects, you might be wondering, \u201cDo Windows VPS?\u201d The answer is a resounding yes. Windows Virtual Private Servers (VPS) offer an excellent way to enjoy the benefits of a dedicated server environment without the hefty price tag. In this guide, we\u2019ll explore what Windows VPS is, its advantages, and how to choose the right provider for your needs. For more insights and options, check out\u00a0Windows VPS.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Windows Server Evaluation: The 180-Day Window and Rearm Math\" \/>\n<meta property=\"og:description\" content=\"Windows Server Evaluation: The 180-Day Window and Rearm Math\" \/>\n<meta property=\"og:url\" content=\"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/\" \/>\n<meta property=\"og:site_name\" content=\"Windows VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-21T02:00:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-11-01T22:05:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/windows-vps.org\/blog\/wp-content\/uploads\/2025\/12\/33669.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"640\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"windows-vps\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@myxiechengxuan\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"windows-vps\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/\",\"url\":\"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/\",\"name\":\"Windows Server Evaluation: The 180-Day Window and Rearm Math - Windows VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/windows-vps.org\/blog\/wp-content\/uploads\/2025\/12\/33669.jpg\",\"datePublished\":\"2025-12-21T02:00:03+00:00\",\"dateModified\":\"2026-11-01T22:05:55+00:00\",\"author\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58\"},\"description\":\"If you\u2019re considering hosting solutions for your business or personal projects, you might be wondering, \u201cDo Windows VPS?\u201d The answer is a resounding yes. Windows Virtual Private Servers (VPS) offer an excellent way to enjoy the benefits of a dedicated server environment without the hefty price tag. In this guide, we\u2019ll explore what Windows VPS is, its advantages, and how to choose the right provider for your needs. For more insights and options, check out\u00a0Windows VPS.\",\"breadcrumb\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/#primaryimage\",\"url\":\"https:\/\/windows-vps.org\/blog\/wp-content\/uploads\/2025\/12\/33669.jpg\",\"contentUrl\":\"https:\/\/windows-vps.org\/blog\/wp-content\/uploads\/2025\/12\/33669.jpg\",\"width\":960,\"height\":640},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/windows-vps.org\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Windows Server Evaluation: The 180-Day Window and Rearm Math\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#website\",\"url\":\"https:\/\/windows-vps.org\/blog\/\",\"name\":\"Windows VPS Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/windows-vps.org\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58\",\"name\":\"windows-vps\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g\",\"caption\":\"windows-vps\"},\"sameAs\":[\"https:\/\/windows-vps.org\/blog\",\"https:\/\/x.com\/myxiechengxuan\"],\"url\":\"https:\/\/windows-vps.org\/blog\/author\/myxiechengxuan\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Windows Server Evaluation: The 180-Day Window and Rearm Math - Windows VPS Blog","description":"If you\u2019re considering hosting solutions for your business or personal projects, you might be wondering, \u201cDo Windows VPS?\u201d The answer is a resounding yes. Windows Virtual Private Servers (VPS) offer an excellent way to enjoy the benefits of a dedicated server environment without the hefty price tag. In this guide, we\u2019ll explore what Windows VPS is, its advantages, and how to choose the right provider for your needs. For more insights and options, check out\u00a0Windows VPS.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/","og_locale":"en_US","og_type":"article","og_title":"Windows Server Evaluation: The 180-Day Window and Rearm Math","og_description":"Windows Server Evaluation: The 180-Day Window and Rearm Math","og_url":"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/","og_site_name":"Windows VPS Blog","article_published_time":"2025-12-21T02:00:03+00:00","article_modified_time":"2026-11-01T22:05:55+00:00","og_image":[{"width":960,"height":640,"url":"https:\/\/windows-vps.org\/blog\/wp-content\/uploads\/2025\/12\/33669.jpg","type":"image\/jpeg"}],"author":"windows-vps","twitter_card":"summary_large_image","twitter_creator":"@myxiechengxuan","twitter_misc":{"Written by":"windows-vps","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/","url":"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/","name":"Windows Server Evaluation: The 180-Day Window and Rearm Math - Windows VPS Blog","isPartOf":{"@id":"https:\/\/windows-vps.org\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/#primaryimage"},"image":{"@id":"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/#primaryimage"},"thumbnailUrl":"https:\/\/windows-vps.org\/blog\/wp-content\/uploads\/2025\/12\/33669.jpg","datePublished":"2025-12-21T02:00:03+00:00","dateModified":"2026-11-01T22:05:55+00:00","author":{"@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58"},"description":"If you\u2019re considering hosting solutions for your business or personal projects, you might be wondering, \u201cDo Windows VPS?\u201d The answer is a resounding yes. Windows Virtual Private Servers (VPS) offer an excellent way to enjoy the benefits of a dedicated server environment without the hefty price tag. In this guide, we\u2019ll explore what Windows VPS is, its advantages, and how to choose the right provider for your needs. For more insights and options, check out\u00a0Windows VPS.","breadcrumb":{"@id":"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/#primaryimage","url":"https:\/\/windows-vps.org\/blog\/wp-content\/uploads\/2025\/12\/33669.jpg","contentUrl":"https:\/\/windows-vps.org\/blog\/wp-content\/uploads\/2025\/12\/33669.jpg","width":960,"height":640},{"@type":"BreadcrumbList","@id":"https:\/\/windows-vps.org\/blog\/windows-server-evaluation-180-day-rearm-activation-math\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/windows-vps.org\/blog\/"},{"@type":"ListItem","position":2,"name":"Windows Server Evaluation: The 180-Day Window and Rearm Math"}]},{"@type":"WebSite","@id":"https:\/\/windows-vps.org\/blog\/#website","url":"https:\/\/windows-vps.org\/blog\/","name":"Windows VPS Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/windows-vps.org\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58","name":"windows-vps","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g","caption":"windows-vps"},"sameAs":["https:\/\/windows-vps.org\/blog","https:\/\/x.com\/myxiechengxuan"],"url":"https:\/\/windows-vps.org\/blog\/author\/myxiechengxuan\/"}]}},"_links":{"self":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/comments?post=178"}],"version-history":[{"count":10,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/178\/revisions"}],"predecessor-version":[{"id":999,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/178\/revisions\/999"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/media\/179"}],"wp:attachment":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/media?parent=178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/categories?post=178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/tags?post=178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}