mirror of
				https://github.com/massgravel/Microsoft-Activation-Scripts.git
				synced 2025-10-31 15:16:56 +01:00 
			
		
		
		
	Remove check activation status scripts and replace them with @abbodi1406's CAS
https://gravesoft.dev/cas
This commit is contained in:
		
							parent
							
								
									5b694779be
								
							
						
					
					
						commit
						bdb9875a6b
					
				| @ -1,259 +0,0 @@ | ||||
| @setlocal DisableDelayedExpansion | ||||
| @echo off | ||||
| @cls | ||||
| 
 | ||||
| 
 | ||||
| :: | ||||
| ::  Check-Activation-Status | ||||
| ::  Written by @abbodi1406 | ||||
| ::  forums.mydigitallife.net/posts/838808 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| set _args= | ||||
| set _args=%* | ||||
| for %%A in (%_args%) do ( | ||||
| if /i "%%A"=="-wow" set _rel1=1 | ||||
| if /i "%%A"=="-arm" set _rel2=1 | ||||
| ) | ||||
| set "_cmdf=%~f0" | ||||
| if exist "%SystemRoot%\Sysnative\cmd.exe" if not defined _rel1 ( | ||||
| setlocal EnableDelayedExpansion | ||||
| start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" -wow" | ||||
| exit /b | ||||
| ) | ||||
| if exist "%SystemRoot%\SysArm32\cmd.exe" if /i %PROCESSOR_ARCHITECTURE%==AMD64 if not defined _rel2 ( | ||||
| setlocal EnableDelayedExpansion | ||||
| start %SystemRoot%\SysArm32\cmd.exe /c ""!_cmdf!" -arm" | ||||
| exit /b | ||||
| ) | ||||
| color 07 | ||||
| title Check Activation Status [vbs] | ||||
| set "SysPath=%SystemRoot%\System32" | ||||
| set "Path=%SystemRoot%\System32;%SystemRoot%\System32\Wbem;%SystemRoot%\System32\WindowsPowerShell\v1.0\" | ||||
| if exist "%SystemRoot%\Sysnative\reg.exe" ( | ||||
| set "SysPath=%SystemRoot%\Sysnative" | ||||
| set "Path=%SystemRoot%\Sysnative;%SystemRoot%\Sysnative\Wbem;%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\;%Path%" | ||||
| ) | ||||
| 
 | ||||
| ::  Check LF line ending | ||||
| 
 | ||||
| pushd "%~dp0" | ||||
| >nul findstr /v "$" "%~nx0" && ( | ||||
| echo: | ||||
| echo Error: Script either has LF line ending issue or an empty line at the end of the script is missing. | ||||
| echo: | ||||
| ping 127.0.0.1 -n 6 >nul | ||||
| popd | ||||
| exit /b | ||||
| ) | ||||
| popd | ||||
| 
 | ||||
| set ohook= | ||||
| for %%# in (15 16) do ( | ||||
| for %%A in ("%ProgramFiles%" "%ProgramW6432%" "%ProgramFiles(x86)%") do ( | ||||
| if exist "%%~A\Microsoft Office\Office%%#\sppc*dll" set ohook=1 | ||||
| ) | ||||
| ) | ||||
| 
 | ||||
| for %%# in (System SystemX86) do ( | ||||
| for %%G in ("Office 15" "Office") do ( | ||||
| for %%A in ("%ProgramFiles%" "%ProgramW6432%" "%ProgramFiles(x86)%") do ( | ||||
| if exist "%%~A\Microsoft %%~G\root\vfs\%%#\sppc*dll" set ohook=1 | ||||
| ) | ||||
| ) | ||||
| ) | ||||
| 
 | ||||
| set "_bit=64" | ||||
| set "_wow=1" | ||||
| if /i "%PROCESSOR_ARCHITECTURE%"=="x86" if "%PROCESSOR_ARCHITEW6432%"=="" set "_wow=0"&set "_bit=32" | ||||
| set "_utemp=%TEMP%" | ||||
| set "line2=************************************************************" | ||||
| set "line3=____________________________________________________________" | ||||
| set _sO16vbs=0 | ||||
| set _sO15vbs=0 | ||||
| if exist "%ProgramFiles%\Microsoft Office\Office15\ospp.vbs" ( | ||||
|   set _sO15vbs=1 | ||||
| ) else if exist "%ProgramW6432%\Microsoft Office\Office15\ospp.vbs" ( | ||||
|   set _sO15vbs=1 | ||||
| ) else if exist "%ProgramFiles(x86)%\Microsoft Office\Office15\ospp.vbs" ( | ||||
|   set _sO15vbs=1 | ||||
| ) | ||||
| setlocal EnableDelayedExpansion | ||||
| echo %line2% | ||||
| echo ***                   Windows Status                     *** | ||||
| echo %line2% | ||||
| pushd "!_utemp!" | ||||
| copy /y %SystemRoot%\System32\slmgr.vbs . >nul 2>&1 | ||||
| net start sppsvc /y >nul 2>&1 | ||||
| cscript //nologo slmgr.vbs /dli || (echo Error executing slmgr.vbs&del /f /q slmgr.vbs&popd&goto :casVend) | ||||
| cscript //nologo slmgr.vbs /xpr | ||||
| del /f /q slmgr.vbs >nul 2>&1 | ||||
| popd | ||||
| echo %line3% | ||||
| 
 | ||||
| if defined ohook ( | ||||
| echo. | ||||
| echo. | ||||
| echo %line2% | ||||
| echo ***            Office Ohook Activation Status            *** | ||||
| echo %line2% | ||||
| echo. | ||||
| powershell "write-host -back 'Black' -fore 'Yellow' 'Ohook for permanent Office activation is installed.'; write-host -back 'Black' -fore 'Yellow' 'You can ignore below Office activation status.'" | ||||
| echo. | ||||
| ) | ||||
| 
 | ||||
| :casVo16 | ||||
| set office= | ||||
| for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\Office\16.0\Common\InstallRoot /v Path" 2^>nul') do (set "office=%%b") | ||||
| if exist "!office!\ospp.vbs" ( | ||||
| set _sO16vbs=1 | ||||
| echo. | ||||
| echo %line2% | ||||
| if %_sO15vbs% EQU 0 ( | ||||
| echo ***              Office 2016 %_bit%-bit Status               *** | ||||
| ) else ( | ||||
| echo ***               Office 2013/2016 Status                *** | ||||
| ) | ||||
| echo %line2% | ||||
| cscript //nologo "!office!\ospp.vbs" /dstatus | ||||
| ) | ||||
| if %_wow%==0 goto :casVo13 | ||||
| set office= | ||||
| for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\16.0\Common\InstallRoot /v Path" 2^>nul') do (set "office=%%b") | ||||
| if exist "!office!\ospp.vbs" ( | ||||
| set _sO16vbs=1 | ||||
| echo. | ||||
| echo %line2% | ||||
| if %_sO15vbs% EQU 0 ( | ||||
| echo ***              Office 2016 32-bit Status               *** | ||||
| ) else ( | ||||
| echo ***               Office 2013/2016 Status                *** | ||||
| ) | ||||
| echo %line2% | ||||
| cscript //nologo "!office!\ospp.vbs" /dstatus | ||||
| ) | ||||
| 
 | ||||
| :casVo13 | ||||
| if %_sO16vbs% EQU 1 goto :casVo10 | ||||
| set office= | ||||
| for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\Office\15.0\Common\InstallRoot /v Path" 2^>nul') do (set "office=%%b") | ||||
| if exist "!office!\ospp.vbs" ( | ||||
| echo. | ||||
| echo %line2% | ||||
| echo ***              Office 2013 %_bit%-bit Status               *** | ||||
| echo %line2% | ||||
| cscript //nologo "!office!\ospp.vbs" /dstatus | ||||
| ) | ||||
| if %_wow%==0 goto :casVo10 | ||||
| set office= | ||||
| for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Common\InstallRoot /v Path" 2^>nul') do (set "office=%%b") | ||||
| if exist "!office!\ospp.vbs" ( | ||||
| echo. | ||||
| echo %line2% | ||||
| echo ***              Office 2013 32-bit Status               *** | ||||
| echo %line2% | ||||
| cscript //nologo "!office!\ospp.vbs" /dstatus | ||||
| ) | ||||
| 
 | ||||
| :casVo10 | ||||
| set office= | ||||
| for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\Office\14.0\Common\InstallRoot /v Path" 2^>nul') do (set "office=%%b") | ||||
| if exist "!office!\ospp.vbs" ( | ||||
| echo. | ||||
| echo %line2% | ||||
| echo ***              Office 2010 %_bit%-bit Status               *** | ||||
| echo %line2% | ||||
| cscript //nologo "!office!\ospp.vbs" /dstatus | ||||
| ) | ||||
| if %_wow%==0 goto :casVc16 | ||||
| set office= | ||||
| for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Common\InstallRoot /v Path" 2^>nul') do (set "office=%%b") | ||||
| if exist "!office!\ospp.vbs" ( | ||||
| echo. | ||||
| echo %line2% | ||||
| echo ***              Office 2010 32-bit Status               *** | ||||
| echo %line2% | ||||
| cscript //nologo "!office!\ospp.vbs" /dstatus | ||||
| ) | ||||
| 
 | ||||
| :casVc16 | ||||
| reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun /v InstallPath >nul 2>&1 || ( | ||||
| reg query HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\ClickToRun /v InstallPath >nul 2>&1 || goto :casVc13 | ||||
| ) | ||||
| set office= | ||||
| for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun /v InstallPath" 2^>nul') do (set "office=%%b\Office16") | ||||
| if exist "!office!\ospp.vbs" ( | ||||
| set _sO16vbs=1 | ||||
| echo. | ||||
| echo %line2% | ||||
| if %_sO15vbs% EQU 0 ( | ||||
| echo ***              Office 2016-2021 C2R Status             *** | ||||
| ) else ( | ||||
| echo ***                Office 2013-2021 Status               *** | ||||
| ) | ||||
| echo %line2% | ||||
| cscript //nologo "!office!\ospp.vbs" /dstatus | ||||
| ) | ||||
| if %_wow%==0 goto :casVc13 | ||||
| set office= | ||||
| for /f "skip=2 tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\ClickToRun /v InstallPath" 2^>nul') do (set "office=%%b\Office16") | ||||
| if exist "!office!\ospp.vbs" ( | ||||
| set _sO16vbs=1 | ||||
| echo. | ||||
| echo %line2% | ||||
| if %_sO15vbs% EQU 0 ( | ||||
| echo ***              Office 2016-2021 C2R Status             *** | ||||
| ) else ( | ||||
| echo ***                Office 2013-2021 Status               *** | ||||
| ) | ||||
| echo %line2% | ||||
| cscript //nologo "!office!\ospp.vbs" /dstatus | ||||
| ) | ||||
| 
 | ||||
| :casVc13 | ||||
| if %_sO16vbs% EQU 1 goto :casVc10 | ||||
| reg query HKLM\SOFTWARE\Microsoft\Office\15.0\ClickToRun /v InstallPath >nul 2>&1 || ( | ||||
| reg query HKLM\SOFTWARE\WOW6432Node\Microsoft\Office\15.0\ClickToRun /v InstallPath >nul 2>&1 || goto :casVc10 | ||||
| ) | ||||
| set office= | ||||
| if exist "%ProgramFiles%\Microsoft Office\Office15\ospp.vbs" ( | ||||
|   set "office=%ProgramFiles%\Microsoft Office\Office15" | ||||
| ) else if exist "%ProgramW6432%\Microsoft Office\Office15\ospp.vbs" ( | ||||
|   set "office=%ProgramW6432%\Microsoft Office\Office15" | ||||
| ) else if exist "%ProgramFiles(x86)%\Microsoft Office\Office15\ospp.vbs" ( | ||||
|   set "office=%ProgramFiles(x86)%\Microsoft Office\Office15" | ||||
| ) | ||||
| if exist "!office!\ospp.vbs" ( | ||||
| echo. | ||||
| echo %line2% | ||||
| echo ***                Office 2013 C2R Status                *** | ||||
| echo %line2% | ||||
| cscript //nologo "!office!\ospp.vbs" /dstatus | ||||
| ) | ||||
| 
 | ||||
| :casVc10 | ||||
| if %_wow%==0 reg query HKLM\SOFTWARE\Microsoft\Office\14.0\CVH /f Click2run /k >nul 2>&1 || goto :casVend | ||||
| if %_wow%==1 reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\CVH /f Click2run /k >nul 2>&1 || goto :casVend | ||||
| set office= | ||||
| if exist "%ProgramFiles%\Microsoft Office\Office14\ospp.vbs" ( | ||||
|   set "office=%ProgramFiles%\Microsoft Office\Office14" | ||||
| ) else if exist "%ProgramW6432%\Microsoft Office\Office14\ospp.vbs" ( | ||||
|   set "office=%ProgramW6432%\Microsoft Office\Office14" | ||||
| ) else if exist "%ProgramFiles(x86)%\Microsoft Office\Office14\ospp.vbs" ( | ||||
|   set "office=%ProgramFiles(x86)%\Microsoft Office\Office14" | ||||
| ) | ||||
| if exist "!office!\ospp.vbs" ( | ||||
| echo. | ||||
| echo %line2% | ||||
| echo ***                Office 2010 C2R Status                *** | ||||
| echo %line2% | ||||
| cscript //nologo "!office!\ospp.vbs" /dstatus | ||||
| ) | ||||
| 
 | ||||
| :casVend | ||||
| echo. | ||||
| echo Press any key to exit. | ||||
| pause >nul | ||||
| exit /b | ||||
| :: Leave empty line below | ||||
| @ -1,564 +0,0 @@ | ||||
| @setlocal DisableDelayedExpansion | ||||
| @echo off | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ::  Check-Activation-Status | ||||
| ::  Written by @abbodi1406 | ||||
| ::  forums.mydigitallife.net/posts/838808 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| set WMI_VBS=0 | ||||
| @cls | ||||
| set _args= | ||||
| set _args=%* | ||||
| for %%A in (%_args%) do ( | ||||
| if /i "%%A"=="-wow" set _rel1=1 | ||||
| if /i "%%A"=="-arm" set _rel2=1 | ||||
| ) | ||||
| set "_cmdf=%~f0" | ||||
| if exist "%SystemRoot%\Sysnative\cmd.exe" if not defined _rel1 ( | ||||
| setlocal EnableDelayedExpansion | ||||
| start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" -wow" | ||||
| exit /b | ||||
| ) | ||||
| if exist "%SystemRoot%\SysArm32\cmd.exe" if /i %PROCESSOR_ARCHITECTURE%==AMD64 if not defined _rel2 ( | ||||
| setlocal EnableDelayedExpansion | ||||
| start %SystemRoot%\SysArm32\cmd.exe /c ""!_cmdf!" -arm" | ||||
| exit /b | ||||
| ) | ||||
| color 07 | ||||
| title Check Activation Status [wmi] | ||||
| 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%, KeyManagementServiceLookupDomain, VLActivationTypeEnabled" | ||||
| if %winbuild% GEQ 9600 set "spp_get=%spp_get%, DiscoveredKeyManagementServiceMachineIpAddress, ProductKeyChannel" | ||||
| set "_work=%~dp0" | ||||
| set "_batf=%~f0" | ||||
| set "_batp=%_batf:'=''%" | ||||
| set "_Local=%LocalAppData%" | ||||
| set _Identity=0 | ||||
| setlocal EnableDelayedExpansion | ||||
| dir /b /s /a:-d "!_Local!\Microsoft\Office\Licenses\*1*" 1>nul 2>nul && set _Identity=1 | ||||
| dir /b /s /a:-d "!ProgramData!\Microsoft\Office\Licenses\*1*" 1>nul 2>nul && set _Identity=1 | ||||
| pushd "!_work!" | ||||
| setlocal DisableDelayedExpansion | ||||
| if %winbuild% LSS 9200 if not exist "%SystemRoot%\servicing\Packages\Microsoft-Windows-PowerShell-WTR-Package~*.mum" set _Identity=0 | ||||
| 
 | ||||
| set "SysPath=%SystemRoot%\System32" | ||||
| set "Path=%SystemRoot%\System32;%SystemRoot%\System32\Wbem;%SystemRoot%\System32\WindowsPowerShell\v1.0\" | ||||
| if exist "%SystemRoot%\Sysnative\reg.exe" ( | ||||
| set "SysPath=%SystemRoot%\Sysnative" | ||||
| set "Path=%SystemRoot%\Sysnative;%SystemRoot%\Sysnative\Wbem;%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\;%Path%" | ||||
| ) | ||||
| 
 | ||||
| ::  Check LF line ending | ||||
| 
 | ||||
| pushd "%~dp0" | ||||
| >nul findstr /v "$" "%~nx0" && ( | ||||
| echo: | ||||
| echo Error: Script either has LF line ending issue or an empty line at the end of the script is missing. | ||||
| echo: | ||||
| ping 127.0.0.1 -n 6 >nul | ||||
| popd | ||||
| exit /b | ||||
| ) | ||||
| popd | ||||
| 
 | ||||
| set ohook= | ||||
| for %%# in (15 16) do ( | ||||
| for %%A in ("%ProgramFiles%" "%ProgramW6432%" "%ProgramFiles(x86)%") do ( | ||||
| if exist "%%~A\Microsoft Office\Office%%#\sppc*dll" set ohook=1 | ||||
| ) | ||||
| ) | ||||
| 
 | ||||
| for %%# in (System SystemX86) do ( | ||||
| for %%G in ("Office 15" "Office") do ( | ||||
| for %%A in ("%ProgramFiles%" "%ProgramW6432%" "%ProgramFiles(x86)%") do ( | ||||
| if exist "%%~A\Microsoft %%~G\root\vfs\%%#\sppc*dll" set ohook=1 | ||||
| ) | ||||
| ) | ||||
| ) | ||||
| 
 | ||||
| set _cwmi=0 | ||||
| for %%# in (wmic.exe) do @if not "%%~$PATH:#"=="" ( | ||||
| wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "ComputerSystem" 1>nul && set _cwmi=1 | ||||
| ) | ||||
| 
 | ||||
| if %_cwmi% EQU 0 ( | ||||
| echo: | ||||
| echo Error: WMI is not responding in the system. | ||||
| echo: | ||||
| echo In MAS, Goto Troubleshoot and run Fix WMI option. | ||||
| echo: | ||||
| echo Press any key to exit... | ||||
| pause >nul | ||||
| exit /b | ||||
| ) | ||||
| 
 | ||||
| set "line2=************************************************************" | ||||
| set "line3=____________________________________________________________" | ||||
| set "_psc=powershell" | ||||
| 
 | ||||
| set _prsh=1 | ||||
| for %%# in (powershell.exe) do @if "%%~$PATH:#"=="" set _prsh=0 | ||||
| set "_csg=cscript.exe //NoLogo //Job:WmiMulti "%~nx0?.wsf"" | ||||
| set "_csq=cscript.exe //NoLogo //Job:WmiQuery "%~nx0?.wsf"" | ||||
| set "_csx=cscript.exe //NoLogo //Job:XPDT "%~nx0?.wsf"" | ||||
| if %_cwmi% EQU 0 set WMI_VBS=1 | ||||
| if %WMI_VBS% EQU 0 ( | ||||
| set "_zz1=wmic path" | ||||
| set "_zz2=where" | ||||
| set "_zz3=get" | ||||
| set "_zz4=/value" | ||||
| set "_zz5=(" | ||||
| set "_zz6=)" | ||||
| set "_zz7="wmic path" | ||||
| set "_zz8=/value"" | ||||
| ) else ( | ||||
| set "_zz1=%_csq%" | ||||
| set "_zz2=" | ||||
| set "_zz3=" | ||||
| set "_zz4=" | ||||
| set "_zz5="" | ||||
| set "_zz6="" | ||||
| set "_zz7=%_csq%" | ||||
| set "_zz8=" | ||||
| ) | ||||
| set _WSH=0 | ||||
| set OsppHook=1 | ||||
| sc query osppsvc >nul 2>&1 | ||||
| if %errorlevel% EQU 1060 set OsppHook=0 | ||||
| 
 | ||||
| net start sppsvc /y >nul 2>&1 | ||||
| call :casWpkey %wspp% %winApp% cW1nd0ws sppw | ||||
| if %winbuild% GEQ 9200 call :casWpkey %wspp% %o15App% c0ff1ce15 sppo | ||||
| if %OsppHook% NEQ 0 ( | ||||
| net start osppsvc /y >nul 2>&1 | ||||
| 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 | ||||
| set "_qr=%_zz7% %wspp% %_zz2% %_zz5%ApplicationID='%winApp%' and PartialProductKey is not null%_zz6% %_zz3% ID %_zz8%" | ||||
| for /f "tokens=2 delims==" %%# in ('%_qr%') do ( | ||||
|   set "chkID=%%#" | ||||
|   call :casWdet "%wspp%" "%wsps%" "%spp_get%" | ||||
|   call :casWout | ||||
|   echo %line3% | ||||
|   echo. | ||||
| ) | ||||
| 
 | ||||
| if defined ohook ( | ||||
| echo. | ||||
| echo. | ||||
| echo %line2% | ||||
| echo ***            Office Ohook Activation Status            *** | ||||
| echo %line2% | ||||
| echo. | ||||
| powershell "write-host -back 'Black' -fore 'Yellow' 'Ohook for permanent Office activation is installed.'; write-host -back 'Black' -fore 'Yellow' 'You can ignore below Office activation status.'" | ||||
| 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% | ||||
| set "_qr=%_zz7% %wspp% %_zz2% %_zz5%ApplicationID='%o15App%' and PartialProductKey is not null%_zz6% %_zz3% ID %_zz8%" | ||||
| for /f "tokens=2 delims==" %%# in ('%_qr%') 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% EQU 1 ( | ||||
| echo %line2% | ||||
| echo ***                   Office Status                      *** | ||||
| echo %line2% | ||||
| ) | ||||
| set "_qr=%_zz7% %ospp% %_zz2% %_zz5%ApplicationID='%o15App%' and PartialProductKey is not null%_zz6% %_zz3% ID %_zz8%" | ||||
| if defined ospp15 for /f "tokens=2 delims==" %%# in ('%_qr%') do ( | ||||
|   set "chkID=%%#" | ||||
|   call :casWdet "%ospp%" "%osps%" "%ospp_get%" | ||||
|   call :casWout | ||||
|   echo %line3% | ||||
|   echo. | ||||
| ) | ||||
| set "_qr=%_zz7% %ospp% %_zz2% %_zz5%ApplicationID='%o14App%' and PartialProductKey is not null%_zz6% %_zz3% ID %_zz8%" | ||||
| if defined ospp14 for /f "tokens=2 delims==" %%# in ('%_qr%') do ( | ||||
|   set "chkID=%%#" | ||||
|   call :casWdet "%ospp%" "%osps%" "%ospp_get%" | ||||
|   call :casWout | ||||
|   echo %line3% | ||||
|   echo. | ||||
| ) | ||||
| goto :casWend | ||||
| 
 | ||||
| :casWpkey | ||||
| set "_qr=%_zz1% %1 %_zz2% %_zz5%ApplicationID='%2' and PartialProductKey is not null%_zz6% %_zz3% ID %_zz4%" | ||||
| %_qr% 2>nul | findstr /i ID 1>nul && (set %3=1&set %4=1) | ||||
| exit /b | ||||
| 
 | ||||
| :casWdet | ||||
| for %%# in (%~3) do set "%%#=" | ||||
| if /i %~1==%ospp% for %%# in (DiscoveredKeyManagementServiceMachineIpAddress, KeyManagementServiceLookupDomain, ProductKeyChannel, VLActivationTypeEnabled) do set "%%#=" | ||||
| set "cKmsClient=" | ||||
| set "cTblClient=" | ||||
| set "cAvmClient=" | ||||
| set "ExpireMsg=" | ||||
| set "_xpr=" | ||||
| set "_qr="wmic path %~1 where ID='%chkID%' get %~3 /value" ^| findstr ^=" | ||||
| if %WMI_VBS% NEQ 0 set "_qr=%_csg% %~1 "ID='%chkID%'" "%~3"" | ||||
| for /f "tokens=* delims=" %%# in ('%_qr%') 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 if %_WSH% EQU 1 ( | ||||
| for /f "tokens=* delims=" %%# in ('%_csx% %GracePeriodRemaining%') do set "_xpr=%%#" | ||||
| ) | ||||
| if %_gpr% GEQ 1 if %_prsh% EQU 1 if not defined _xpr ( | ||||
| for /f "tokens=* delims=" %%# in ('%_psc% "$([DateTime]::Now.addMinutes(%GracePeriodRemaining%)).ToString('yyyy-MM-dd HH:mm:ss')" 2^>nul') do set "_xpr=%%#" | ||||
| title Check Activation Status [wmi] | ||||
| ) | ||||
| 
 | ||||
| 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" | ||||
| 
 | ||||
| set "_qr="wmic path %~2 get ClientMachineID, KeyManagementServiceHostCaching /value" ^| findstr ^=" | ||||
| if %WMI_VBS% NEQ 0 set "_qr=%_csg% %~2 "ClientMachineID, KeyManagementServiceHostCaching"" | ||||
| for /f "tokens=* delims=" %%# in ('%_qr%') do set "%%#" | ||||
| if /i %KeyManagementServiceHostCaching%==True (set KeyManagementServiceHostCaching=Enabled) else (set KeyManagementServiceHostCaching=Disabled) | ||||
| 
 | ||||
| if %winbuild% LSS 9200 exit /b | ||||
| if /i %~1==%ospp% exit /b | ||||
| 
 | ||||
| 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 | ||||
| ) | ||||
| 
 | ||||
| if %winbuild% LSS 9600 exit /b | ||||
| if "%DiscoveredKeyManagementServiceMachineIpAddress%"=="" set "DiscoveredKeyManagementServiceMachineIpAddress=not available" | ||||
| 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.    K.M.S host caching: %KeyManagementServiceHostCaching% | ||||
| if defined KeyManagementServiceLookupDomain echo.    KMS SRV record lookup domain: %KeyManagementServiceLookupDomain% | ||||
| if defined ExpireMsg echo.&echo.    %ExpireMsg% | ||||
| exit /b | ||||
| 
 | ||||
| :casWend | ||||
| if %_Identity% EQU 1 if %_prsh% EQU 1 ( | ||||
| echo %line2% | ||||
| echo ***                  Office vNext Status                 *** | ||||
| echo %line2% | ||||
| setlocal EnableDelayedExpansion | ||||
| %_psc% "$f=[IO.File]::ReadAllText('!_batp!') -split ':vNextDiag\:.*';iex ($f[1])" | ||||
| title Check Activation Status [wmi] | ||||
| echo %line3% | ||||
| echo. | ||||
| ) | ||||
| echo. | ||||
| echo Press any key to exit. | ||||
| pause >nul | ||||
| exit /b | ||||
| 
 | ||||
| :vNextDiag: | ||||
| function PrintModePerPridFromRegistry | ||||
| { | ||||
| 	$vNextRegkey = "HKCU:\SOFTWARE\Microsoft\Office\16.0\Common\Licensing\LicensingNext" | ||||
| 	$vNextPrids = Get-Item -Path $vNextRegkey -ErrorAction Ignore | Select-Object -ExpandProperty 'property' | Where-Object -FilterScript {$_.ToLower() -like "*retail" -or $_.ToLower() -like "*volume"} | ||||
| 	If ($vNextPrids -Eq $null) | ||||
| 	{ | ||||
| 		Write-Host "No registry keys found." | ||||
| 		Return | ||||
| 	} | ||||
| 	$vNextPrids | ForEach ` | ||||
| 	{ | ||||
| 		$mode = (Get-ItemProperty -Path $vNextRegkey -Name $_).$_ | ||||
| 		Switch ($mode) | ||||
| 		{ | ||||
| 			2 { $mode = "vNext"; Break } | ||||
| 			3 { $mode = "Device"; Break } | ||||
| 			Default { $mode = "Legacy"; Break } | ||||
| 		} | ||||
| 		Write-Host $_ = $mode | ||||
| 	} | ||||
| } | ||||
| function PrintSharedComputerLicensing | ||||
| { | ||||
| 	$scaRegKey = "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration" | ||||
| 	$scaValue = Get-ItemProperty -Path $scaRegKey -ErrorAction Ignore | Select-Object -ExpandProperty "SharedComputerLicensing" -ErrorAction Ignore | ||||
| 	$scaRegKey2 = "HKLM:\SOFTWARE\Microsoft\Office\16.0\Common\Licensing" | ||||
| 	$scaValue2 = Get-ItemProperty -Path $scaRegKey2 -ErrorAction Ignore | Select-Object -ExpandProperty "SharedComputerLicensing" -ErrorAction Ignore | ||||
| 	$scaPolicyKey = "HKLM:\SOFTWARE\Policies\Microsoft\Office\16.0\Common\Licensing" | ||||
| 	$scaPolicyValue = Get-ItemProperty -Path $scaPolicyKey -ErrorAction Ignore | Select-Object -ExpandProperty "SharedComputerLicensing" -ErrorAction Ignore | ||||
| 	If ($scaValue -Eq $null -And $scaValue2 -Eq $null -And $scaPolicyValue -Eq $null) | ||||
| 	{ | ||||
| 		Write-Host "No registry keys found." | ||||
| 		Return | ||||
| 	} | ||||
| 	$scaModeValue = $scaValue -Or $scaValue2 -Or $scaPolicyValue | ||||
| 	If ($scaModeValue -Eq 0) | ||||
| 	{ | ||||
| 		$scaMode = "Disabled" | ||||
| 	} | ||||
| 	If ($scaModeValue -Eq 1) | ||||
| 	{ | ||||
| 		$scaMode = "Enabled" | ||||
| 	} | ||||
| 	Write-Host "SharedComputerLicensing" = $scaMode | ||||
| 	Write-Host | ||||
| 	$tokenFiles = $null | ||||
| 	$tokenPath = "${env:LOCALAPPDATA}\Microsoft\Office\16.0\Licensing" | ||||
| 	If (Test-Path $tokenPath) | ||||
| 	{ | ||||
| 		$tokenFiles = Get-ChildItem -Path $tokenPath -Recurse -File -Filter "*authString*" | ||||
| 	} | ||||
| 	If ($tokenFiles.length -Eq 0) | ||||
| 	{ | ||||
| 		Write-Host "No tokens found." | ||||
| 		Return | ||||
| 	} | ||||
| 	$tokenFiles | ForEach ` | ||||
| 	{ | ||||
| 		$tokenParts = (Get-Content -Encoding Unicode -Path $_.FullName).Split('_') | ||||
| 		$output = [PSCustomObject] ` | ||||
| 			@{ | ||||
| 				ACID = $tokenParts[0]; | ||||
| 				User = $tokenParts[3] | ||||
| 				NotBefore = $tokenParts[4]; | ||||
| 				NotAfter = $tokenParts[5]; | ||||
| 			} | ConvertTo-Json | ||||
| 		Write-Host $output | ||||
| 	} | ||||
| } | ||||
| function PrintLicensesInformation | ||||
| { | ||||
| 	Param( | ||||
| 		[ValidateSet("NUL", "Device")] | ||||
| 		[String]$mode | ||||
| 	) | ||||
| 	If ($mode -Eq "NUL") | ||||
| 	{ | ||||
| 		$licensePath = "${env:LOCALAPPDATA}\Microsoft\Office\Licenses" | ||||
| 	} | ||||
| 	ElseIf ($mode -Eq "Device") | ||||
| 	{ | ||||
| 		$licensePath = "${env:PROGRAMDATA}\Microsoft\Office\Licenses" | ||||
| 	} | ||||
| 	$licenseFiles = $null | ||||
| 	If (Test-Path $licensePath) | ||||
| 	{ | ||||
| 		$licenseFiles = Get-ChildItem -Path $licensePath -Recurse -File | ||||
| 	} | ||||
| 	If ($licenseFiles.length -Eq 0) | ||||
| 	{ | ||||
| 		Write-Host "No licenses found." | ||||
| 		Return | ||||
| 	} | ||||
| 	$licenseFiles | ForEach ` | ||||
| 	{ | ||||
| 		$license = (Get-Content -Encoding Unicode $_.FullName | ConvertFrom-Json).License | ||||
| 		$decodedLicense = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($license)) | ConvertFrom-Json | ||||
| 		$licenseType = $decodedLicense.LicenseType | ||||
| 		If ($null -Ne $decodedLicense.ExpiresOn) | ||||
| 		{ | ||||
| 			$expiry = [DateTime]::Parse($decodedLicense.ExpiresOn, $null, 48) | ||||
| 		} | ||||
| 		Else | ||||
| 		{ | ||||
| 			$expiry = New-Object DateTime | ||||
| 		} | ||||
| 		$licenseState = $null | ||||
| 		If ((Get-Date) -Gt (Get-Date $decodedLicense.MetaData.NotAfter)) | ||||
| 		{ | ||||
| 			$licenseState = "RFM" | ||||
| 		} | ||||
| 		ElseIf ((Get-Date) -Lt (Get-Date $expiry)) | ||||
| 		{ | ||||
| 			$licenseState = "Licensed" | ||||
| 		} | ||||
| 		Else | ||||
| 		{ | ||||
| 			$licenseState = "Grace" | ||||
| 		} | ||||
| 		if ($mode -Eq "NUL") | ||||
| 		{ | ||||
| 			$output = [PSCustomObject] ` | ||||
| 			@{ | ||||
| 				Version = $_.Directory.Name | ||||
| 				Type = "User|${licenseType}"; | ||||
| 				Product = $decodedLicense.ProductReleaseId; | ||||
| 				Acid = $decodedLicense.Acid; | ||||
| 				LicenseState = $licenseState; | ||||
| 				EntitlementStatus = $decodedLicense.Status; | ||||
| 				EntitlementExpiration = $decodedLicense.ExpiresOn; | ||||
| 				ReasonCode = $decodedLicense.ReasonCode; | ||||
| 				NotBefore = $decodedLicense.Metadata.NotBefore; | ||||
| 				NotAfter = $decodedLicense.Metadata.NotAfter; | ||||
| 				NextRenewal = $decodedLicense.Metadata.RenewAfter; | ||||
| 				TenantId = $decodedLicense.Metadata.TenantId; | ||||
| 			} | ConvertTo-Json | ||||
| 		} | ||||
| 		ElseIf ($mode -Eq "Device") | ||||
| 		{ | ||||
| 			$output = [PSCustomObject] ` | ||||
| 			@{ | ||||
| 				Version = $_.Directory.Name | ||||
| 				Type = "Device|${licenseType}"; | ||||
| 				Product = $decodedLicense.ProductReleaseId; | ||||
| 				Acid = $decodedLicense.Acid; | ||||
| 				DeviceId = $decodedLicense.Metadata.DeviceId; | ||||
| 				LicenseState = $licenseState; | ||||
| 				EntitlementStatus = $decodedLicense.Status; | ||||
| 				EntitlementExpiration = $decodedLicense.ExpiresOn; | ||||
| 				ReasonCode = $decodedLicense.ReasonCode; | ||||
| 				NotBefore = $decodedLicense.Metadata.NotBefore; | ||||
| 				NotAfter = $decodedLicense.Metadata.NotAfter; | ||||
| 				NextRenewal = $decodedLicense.Metadata.RenewAfter; | ||||
| 				TenantId = $decodedLicense.Metadata.TenantId; | ||||
| 			} | ConvertTo-Json | ||||
| 		} | ||||
| 		Write-Output $output | ||||
| 	} | ||||
| } | ||||
| 	Write-Host | ||||
| 	Write-Host "========== Mode per ProductReleaseId ==========" | ||||
| 	Write-Host | ||||
| PrintModePerPridFromRegistry | ||||
| 	Write-Host | ||||
| 	Write-Host "========== Shared Computer Licensing ==========" | ||||
| 	Write-Host | ||||
| PrintSharedComputerLicensing | ||||
| 	Write-Host | ||||
| 	Write-Host "========== vNext licenses ==========" | ||||
| 	Write-Host | ||||
| PrintLicensesInformation -Mode "NUL" | ||||
| 	Write-Host | ||||
| 	Write-Host "========== Device licenses ==========" | ||||
| 	Write-Host | ||||
| PrintLicensesInformation -Mode "Device" | ||||
| :vNextDiag: | ||||
| ::=================================================== | ||||
| :: Leave empty line below | ||||
							
								
								
									
										1025
									
								
								MAS/Separate-Files-Version/Check-Activation-Status.cmd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1025
									
								
								MAS/Separate-Files-Version/Check-Activation-Status.cmd
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user