@setlocal DisableDelayedExpansion @echo off @cls :: ================================================== :: Check-Activation-Status-Alternative.cmd :: Written by @abbodi1406 (MDL) :: https://forums.mydigitallife.net/posts/838808 :: ================================================== color 07 title Check Activation Status [wmic] set wspp=SoftwareLicensingProduct set wsps=SoftwareLicensingService set ospp=OfficeSoftwareProtectionProduct set osps=OfficeSoftwareProtectionService set winApp=55c92734-d682-4d71-983e-d6ec3f16059f set o14App=59a52881-a989-479d-af46-f275c6370663 set o15App=0ff1ce15-a989-479d-af46-f275c6370663 for %%# in (spp_get,ospp_get,cW1nd0ws,sppw,c0ff1ce15,sppo,osppsvc,ospp14,ospp15) do set "%%#=" for /f "tokens=6 delims=[]. " %%# in ('ver') do set winbuild=%%# set "spp_get=Description, DiscoveredKeyManagementServiceMachineName, DiscoveredKeyManagementServiceMachinePort, EvaluationEndDate, GracePeriodRemaining, ID, KeyManagementServiceMachine, KeyManagementServicePort, KeyManagementServiceProductKeyID, LicenseStatus, LicenseStatusReason, Name, PartialProductKey, ProductKeyID, VLActivationInterval, VLRenewalInterval" set "ospp_get=%spp_get%" if %winbuild% geq 9200 set "spp_get=%spp_get%, DiscoveredKeyManagementServiceMachineIpAddress, KeyManagementServiceLookupDomain, ProductKeyChannel, VLActivationTypeEnabled" set "SysPath=%Windir%\System32" if exist "%Windir%\Sysnative\reg.exe" (set "SysPath=%Windir%\Sysnative") set "Path=%SysPath%;%Windir%;%SysPath%\Wbem;%SysPath%\WindowsPowerShell\v1.0\" set "line2=************************************************************" set "line3=____________________________________________________________" call :casWpkey %wspp% %winApp% cW1nd0ws sppw if %winbuild% geq 9200 call :casWpkey %wspp% %o15App% c0ff1ce15 sppo wmic path %osps% get Version 1>nul 2>nul && ( call :casWpkey %ospp% %o14App% osppsvc ospp14 if %winbuild% lss 9200 call :casWpkey %ospp% %o15App% osppsvc ospp15 ) echo %line2% echo *** Windows Status *** echo %line2% if not defined cW1nd0ws ( echo: echo Error: product key not found. goto :casWcon ) set winID=1 for /f "tokens=2 delims==" %%# in ('"wmic path %wspp% where (ApplicationID='%winApp%' and PartialProductKey is not null) get ID /value"') do ( set "chkID=%%#" call :casWdet "%wspp%" "%wsps%" "%spp_get%" call :casWout echo %line3% echo: ) :casWcon set winID=0 set verbose=1 if not defined c0ff1ce15 ( if defined osppsvc goto :casWospp goto :casWend ) echo %line2% echo *** Office Status *** echo %line2% for /f "tokens=2 delims==" %%# in ('"wmic path %wspp% where (ApplicationID='%o15App%' and PartialProductKey is not null) get ID /value"') do ( set "chkID=%%#" call :casWdet "%wspp%" "%wsps%" "%spp_get%" call :casWout echo %line3% echo: ) set verbose=0 if defined osppsvc goto :casWospp goto :casWend :casWospp if %verbose%==1 ( echo %line2% echo *** Office Status *** echo %line2% ) if defined ospp15 for /f "tokens=2 delims==" %%# in ('"wmic path %ospp% where (ApplicationID='%o15App%' and PartialProductKey is not null) get ID /value"') do ( set "chkID=%%#" call :casWdet "%ospp%" "%osps%" "%ospp_get%" call :casWout echo %line3% echo: ) if defined ospp14 for /f "tokens=2 delims==" %%# in ('"wmic path %ospp% where (ApplicationID='%o14App%' and PartialProductKey is not null) get ID /value"') do ( set "chkID=%%#" call :casWdet "%ospp%" "%osps%" "%ospp_get%" call :casWout echo %line3% echo: ) goto :casWend :casWpkey wmic path %1 where (ApplicationID='%2' and PartialProductKey is not null) get ID /value 2>nul | findstr /i ID 1>nul && (set %3=1&set %4=1) exit /b :casWdet for %%# in (%~3) do set "%%#=" if %~1 equ %ospp% for %%# in (DiscoveredKeyManagementServiceMachineIpAddress, KeyManagementServiceLookupDomain, ProductKeyChannel, VLActivationTypeEnabled) do set "%%#=" set "cKmsClient=" set "cTblClient=" set "cAvmClient=" set "ExpireMsg=" set "_xpr=" for /f "tokens=* delims=" %%# in ('"wmic path %~1 where ID='%chkID%' get %~3 /value" ^| findstr ^=') do set "%%#" set /a _gpr=(GracePeriodRemaining+1440-1)/1440 echo %Description%| findstr /i VOLUME_KMSCLIENT 1>nul && (set cKmsClient=1&set _mTag=Volume) echo %Description%| findstr /i TIMEBASED_ 1>nul && (set cTblClient=1&set _mTag=Timebased) echo %Description%| findstr /i VIRTUAL_MACHINE_ACTIVATION 1>nul && (set cAvmClient=1&set _mTag=Automatic VM) cmd /c exit /b %LicenseStatusReason% set "LicenseReason=%=ExitCode%" set "LicenseMsg=Time remaining: %GracePeriodRemaining% minute(s) (%_gpr% day(s))" if %_gpr% GEQ 1 for /f "tokens=* delims=" %%# in ('powershell "$([DateTime]::Now.addMinutes(%GracePeriodRemaining%)).ToString('yyyy-MM-dd HH:mm:ss')" 2^>nul') do set "_xpr=%%#" if %LicenseStatus% EQU 0 ( set "License=Unlicensed" set "LicenseMsg=" ) if %LicenseStatus% EQU 1 ( set "License=Licensed" set "LicenseMsg=" if %GracePeriodRemaining% EQU 0 ( if %winID% EQU 1 (set "ExpireMsg=The machine is permanently activated.") else (set "ExpireMsg=The product is permanently activated.") ) else ( set "LicenseMsg=%_mTag% activation expiration: %GracePeriodRemaining% minute(s) (%_gpr% day(s))" if defined _xpr set "ExpireMsg=%_mTag% activation will expire %_xpr%" ) ) if %LicenseStatus% EQU 2 ( set "License=Initial grace period" if defined _xpr set "ExpireMsg=Initial grace period ends %_xpr%" ) if %LicenseStatus% EQU 3 ( set "License=Additional grace period (KMS license expired or hardware out of tolerance)" if defined _xpr set "ExpireMsg=Additional grace period ends %_xpr%" ) if %LicenseStatus% EQU 4 ( set "License=Non-genuine grace period." if defined _xpr set "ExpireMsg=Non-genuine grace period ends %_xpr%" ) if %LicenseStatus% EQU 6 ( set "License=Extended grace period" if defined _xpr set "ExpireMsg=Extended grace period ends %_xpr%" ) if %LicenseStatus% EQU 5 ( set "License=Notification" if "%LicenseReason%"=="C004F200" (set "LicenseMsg=Notification Reason: 0xC004F200 (non-genuine)." ) else if "%LicenseReason%"=="C004F009" (set "LicenseMsg=Notification Reason: 0xC004F009 (grace time expired)." ) else (set "LicenseMsg=Notification Reason: 0x%LicenseReason%" ) ) if %LicenseStatus% GTR 6 ( set "License=Unknown" set "LicenseMsg=" ) if not defined cKmsClient exit /b if %KeyManagementServicePort%==0 set KeyManagementServicePort=1688 set "KmsReg=Registered KMS machine name: %KeyManagementServiceMachine%:%KeyManagementServicePort%" if "%KeyManagementServiceMachine%"=="" set "KmsReg=Registered KMS machine name: KMS name not available" if %DiscoveredKeyManagementServiceMachinePort%==0 set DiscoveredKeyManagementServiceMachinePort=1688 set "KmsDns=KMS machine name from DNS: %DiscoveredKeyManagementServiceMachineName%:%DiscoveredKeyManagementServiceMachinePort%" if "%DiscoveredKeyManagementServiceMachineName%"=="" set "KmsDns=DNS auto-discovery: KMS name not available" for /f "tokens=* delims=" %%# in ('"wmic path %~2 get ClientMachineID, KeyManagementServiceHostCaching /value" ^| findstr ^=') do set "%%#" if /i %KeyManagementServiceHostCaching%==True (set KeyManagementServiceHostCaching=Enabled) else (set KeyManagementServiceHostCaching=Disabled) if %winbuild% lss 9200 exit /b if %~1 equ %ospp% exit /b if "%DiscoveredKeyManagementServiceMachineIpAddress%"=="" set "DiscoveredKeyManagementServiceMachineIpAddress=not available" if "%KeyManagementServiceLookupDomain%"=="" set "KeyManagementServiceLookupDomain=" if %VLActivationTypeEnabled% EQU 3 ( set VLActivationType=Token ) else if %VLActivationTypeEnabled% EQU 2 ( set VLActivationType=KMS ) else if %VLActivationTypeEnabled% EQU 1 ( set VLActivationType=AD ) else ( set VLActivationType=All ) exit /b :casWout echo: echo Name: %Name% echo Description: %Description% echo Activation ID: %ID% echo Extended PID: %ProductKeyID% if defined ProductKeyChannel echo Product Key Channel: %ProductKeyChannel% echo Partial Product Key: %PartialProductKey% echo License Status: %License% if defined LicenseMsg echo %LicenseMsg% if not %LicenseStatus%==0 if not %EvaluationEndDate:~0,8%==16010101 echo Evaluation End Date: %EvaluationEndDate:~0,4%-%EvaluationEndDate:~4,2%-%EvaluationEndDate:~6,2% %EvaluationEndDate:~8,2%:%EvaluationEndDate:~10,2% UTC if not defined cKmsClient ( if defined ExpireMsg echo:&echo: %ExpireMsg% exit /b ) if defined VLActivationTypeEnabled echo Configured Activation Type: %VLActivationType% echo: if not %LicenseStatus%==1 ( echo Please activate the product in order to update KMS client information values. exit /b ) echo Most recent activation information: echo Key Management Service client information echo: Client Machine ID (CMID): %ClientMachineID% echo: %KmsDns% echo: %KmsReg% if defined DiscoveredKeyManagementServiceMachineIpAddress echo: KMS machine IP address: %DiscoveredKeyManagementServiceMachineIpAddress% echo: KMS machine extended PID: %KeyManagementServiceProductKeyID% echo: Activation interval: %VLActivationInterval% minutes echo: Renewal interval: %VLRenewalInterval% minutes echo: KMS host caching: %KeyManagementServiceHostCaching% if defined KeyManagementServiceLookupDomain echo: KMS SRV record lookup domain: %KeyManagementServiceLookupDomain% if defined ExpireMsg echo:&echo: %ExpireMsg% exit /b :casWend echo: echo Press any key to exit. pause >nul exit /b