mirror of
				https://github.com/massgravel/Microsoft-Activation-Scripts.git
				synced 2025-11-04 00:46:57 +01:00 
			
		
		
		
	
		
			
	
	
		
			226 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Batchfile
		
	
	
	
	
	
		
		
			
		
	
	
			226 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Batchfile
		
	
	
	
	
	
| 
								 | 
							
								@setlocal DisableDelayedExpansion
							 | 
						||
| 
								 | 
							
								@echo off
							 | 
						||
| 
								 | 
							
								@cls
							 | 
						||
| 
								 | 
							
								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 -nop -ep bypass -c "$([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
							 |