WindowsAddict
5 months ago
3 changed files with 1025 additions and 823 deletions
@ -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 |
|
Loading…
Reference in new issue