Compare commits
95 Commits
35e044ddc8
...
c75cd29b9f
Author | SHA1 | Date |
---|---|---|
WindowsAddict | c75cd29b9f | 2 months ago |
Ave | b1b5299c47 | 2 months ago |
Ave | 652092e985 | 2 months ago |
WindowsAddict | b06c83622a | 2 months ago |
WindowsAddict | ce669809bf | 2 months ago |
WindowsAddict | 0afb09cbd1 | 2 months ago |
WindowsAddict | 5d8a463475 | 2 months ago |
WindowsAddict | 7044f37b44 | 2 months ago |
WindowsAddict | 08443039aa | 2 months ago |
WindowsAddict | fd8b81411c | 2 months ago |
WindowsAddict | 213bc50b49 | 2 months ago |
WindowsAddict | 00e81be52f | 2 months ago |
WindowsAddict | 2443e1e471 | 2 months ago |
WindowsAddict | ec31fef9b9 | 2 months ago |
WindowsAddict | 84f5516632 | 2 months ago |
WindowsAddict | f9f386a896 | 2 months ago |
WindowsAddict | 8e3b4135f5 | 2 months ago |
WindowsAddict | bacb32f4a1 | 2 months ago |
WindowsAddict | 86c86c179a | 2 months ago |
WindowsAddict | 445a74ccea | 2 months ago |
WindowsAddict | 69e6c9bf71 | 3 months ago |
WindowsAddict | 0ced0f5d8e | 3 months ago |
Lyssa | 19be25c029 | 3 months ago |
WindowsAddict | d372b62280 | 3 months ago |
WindowsAddict | 9e5062e7cc | 3 months ago |
WindowsAddict | ed3dace78f | 3 months ago |
WindowsAddict | 1f50e4ba98 | 3 months ago |
WindowsAddict | af7d204c96 | 3 months ago |
WindowsAddict | 0d26ba046e | 3 months ago |
WindowsAddict | 3fd1666926 | 3 months ago |
WindowsAddict | bf814304c6 | 3 months ago |
WindowsAddict | 1dfd3f6626 | 3 months ago |
WindowsAddict | 79bc7b0242 | 3 months ago |
Adel Aloui | ae48118ddb | 3 months ago |
WindowsAddict | b983bd41da | 3 months ago |
WindowsAddict | d55b9fa78c | 3 months ago |
WindowsAddict | fb113c7c24 | 3 months ago |
WindowsAddict | 9efc3e49b9 | 3 months ago |
WindowsAddict | a62c3ac36d | 3 months ago |
WindowsAddict | 73eabbff59 | 3 months ago |
WindowsAddict | bc5efae19d | 3 months ago |
WindowsAddict | deb74ab9b8 | 3 months ago |
WindowsAddict | d08ed1bd38 | 3 months ago |
WindowsAddict | 5f5a51322d | 3 months ago |
WindowsAddict | fd0e25f477 | 3 months ago |
WindowsAddict | b33dcb2f72 | 3 months ago |
WindowsAddict | 117ba004f0 | 3 months ago |
WindowsAddict | b0d898973f | 3 months ago |
WindowsAddict | 63b3c5097b | 3 months ago |
WindowsAddict | 69430c6458 | 3 months ago |
WindowsAddict | 9f57f585d5 | 3 months ago |
WindowsAddict | 52decdde18 | 3 months ago |
WindowsAddict | 601bd0e420 | 3 months ago |
WindowsAddict | 5e4988a634 | 3 months ago |
WindowsAddict | 3a050f2da7 | 3 months ago |
WindowsAddict | 31b55fd0e3 | 3 months ago |
WindowsAddict | 62d5d5442e | 3 months ago |
WindowsAddict | f2e6e6e389 | 3 months ago |
WindowsAddict | b5a305a14e | 3 months ago |
WindowsAddict | 6c71e82ef3 | 3 months ago |
WindowsAddict | 66e8cda508 | 3 months ago |
WindowsAddict | 98027af16d | 3 months ago |
WindowsAddict | be45752a21 | 3 months ago |
WindowsAddict | a421b12ae4 | 3 months ago |
WindowsAddict | d06185d7f7 | 3 months ago |
WindowsAddict | a46bb78e5e | 3 months ago |
WindowsAddict | 2470963537 | 3 months ago |
WindowsAddict | 89bff68b28 | 3 months ago |
WindowsAddict | 191121c3d4 | 3 months ago |
WindowsAddict | 7bf55fc6ee | 3 months ago |
WindowsAddict | 816925bfef | 4 months ago |
WindowsAddict | ad45cf0926 | 4 months ago |
WindowsAddict | 29eb5bd60d | 4 months ago |
WindowsAddict | 70b754657f | 4 months ago |
WindowsAddict | 8b58696455 | 4 months ago |
WindowsAddict | 5d47723d07 | 4 months ago |
WindowsAddict | 2b786e3037 | 4 months ago |
WindowsAddict | 4451a25e7f | 4 months ago |
WindowsAddict | 886745f103 | 4 months ago |
WindowsAddict | 5728ba2686 | 4 months ago |
WindowsAddict | ddccc4025f | 4 months ago |
WindowsAddict | 1567903b09 | 4 months ago |
WindowsAddict | f6125eaa5b | 4 months ago |
WindowsAddict | 07c4fcdc74 | 4 months ago |
WindowsAddict | 962f7e326a | 4 months ago |
WindowsAddict | 6f88a4bf90 | 4 months ago |
WindowsAddict | dd3d788bfa | 4 months ago |
WindowsAddict | 3d16fc6a07 | 4 months ago |
WindowsAddict | e1b9942223 | 4 months ago |
WindowsAddict | 53cda879c1 | 4 months ago |
WindowsAddict | 211835666b | 4 months ago |
WindowsAddict | bdb9875a6b | 4 months ago |
WindowsAddict | 5b694779be | 4 months ago |
WindowsAddict | b7c3f9a98a | 4 months ago |
WindowsAddict | 48fb5fc5fe | 4 months ago |
@ -1,3 +1,4 @@
|
|||||||
# MAS export-ignore
|
# MAS export-ignore
|
||||||
# LICENSE export-ignore
|
# LICENSE export-ignore
|
||||||
# README.md export-ignore
|
# README.md export-ignore
|
||||||
|
.gitattributes export-ignore
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -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
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue