๐ง Recipe ยท Troubleshooting & Diagnostics
Check Windows activation status on a workstation
Verify Windows licensing state using GUI, slmgr, and PowerShell
Complexity
Beginner
Impact
troubleshooting + licensing + endpoint + windows
Context
Why This Matters
Confirming Windows activation is a routine troubleshooting step when users report watermark messages ("Activate Windows"), missing personalization settings, or after hardware changes, reimaging, or a key swap. An unactivated Windows installation can also block Windows Update features, BitLocker provisioning under some policies, and compliance reporting.
Run this recipe when:
- A user reports an "Activate Windows" watermark or nag dialog.
- A machine has just been reimaged, joined to the domain, or had its motherboard replaced.
- You are auditing fleet compliance before a Microsoft licensing true-up.
- MDM/Intune reports a device as non-compliant for licensing.
Expected Outcomes
After following this recipe you will be able to:
- Determine whether Windows is activated, in grace period, in notification mode, or unlicensed.
- Identify the activation channel (Retail, OEM, Volume/KMS, or MAK).
- Retrieve the partial product key and activation ID for escalation.
- Collect a standardized activation report suitable for ticket notes.
Risks & Considerations
Cautions
- Do not run
slmgr /rearmunless you specifically intend to reset the activation timer โ it is limited to a small number of uses per image. - Avoid
slmgr /upk(uninstall product key) on production machines; it will deactivate Windows immediately. - Displaying full product keys may violate your organization's data handling policy. The commands below intentionally show only the last five characters.
- On KMS-activated devices, an activation failure may simply mean the device cannot currently reach the KMS host โ check network/VPN before escalating to license replacement.
- Activation state queried remotely requires administrative rights on the target device and WinRM or PS Remoting enabled.
Required Permissions
| Permission | Why It's Needed |
|---|---|
| Local Administrator on target device | Required to run slmgr.vbs and query the SoftwareLicensingProduct WMI class with full detail. |
| WinRM / PowerShell Remoting enabled | Needed only if you are checking activation on a remote workstation rather than locally. |
The fastest way to get this done: just ask Dex. Copy the prompt below and paste it into your Dex conversation.
For IT Admins
Paste into Dex Pro
For End Users
How an employee would ask Dex for help
Check activation via Windows Settings
- On the target workstation, press
Win + Ito open Settings. - Navigate to: (Windows 11) or (Windows 10).
- Review the Activation state field. Expected values:
- Active โ Windows is licensed and activated.
- Not active โ Activation failed; an error code (e.g.,
0xC004F074) will be shown.
- Expand the Activation state tile to view the edition (e.g., Windows 11 Pro) and the activation method (Digital license, Product key, or Organization's activation service).
Quick check via Run dialog
- Press
Win + R, typeslmgr.vbs /xpr, and press Enter. - A dialog will report one of:
- The machine is permanently activated.
- Will expire on [date] โ typical for KMS-activated devices (180-day renewal).
- Notification mode โ activation has failed or grace period has ended.
Not applicable for this recipe. Windows activation status is a local licensing state exposed through WMI/slmgr on each device; there is no Microsoft cloud REST API that reports per-device Windows activation. If you manage devices via Intune, you can view the Windows edition and license type under , but the authoritative activation state is retrieved on-device using the PowerShell approach below.
Local check (one-liner)
Run an elevated PowerShell session on the target workstation:
# Human-readable activation status slmgr.vbs /xpr # Detailed license info: channel, partial key, expiration slmgr.vbs /dli # Full license info (all installed SKUs) slmgr.vbs /dlv
Structured query via CIM/WMI
For scripting and reporting, query the SoftwareLicensingProduct class and filter to the installed Windows SKU:
Get-CimInstance -ClassName SoftwareLicensingProduct |
Where-Object { $_.PartialProductKey -and $_.Name -like 'Windows*' } |
Select-Object Name, Description, LicenseStatus, PartialProductKey, GracePeriodRemainingLicenseStatus values:
0โ Unlicensed1โ Licensed (activated)2โ Out-of-Box Grace3โ Out-of-Tolerance Grace4โ Non-Genuine Grace5โ Notification6โ Extended Grace
Remote check
To check a remote workstation, wrap the query in Invoke-Command:
Invoke-Command -ComputerName 'WKSTN-01' -ScriptBlock { Get-CimInstance SoftwareLicensingProduct | Where-Object { $_.PartialProductKey -and $_.Name -like 'Windows*' } | Select-Object PSComputerName, Name, LicenseStatus, PartialProductKey }
The downloadable script below wraps these checks, decodes LicenseStatus, and supports multiple remote targets.
Next steps