summaryrefslogtreecommitdiff
path: root/MAS/Separate-Files-Version/Check-Activation-Status-wmi.cmd
diff options
context:
space:
mode:
authorDESKTOP-AJSJJMA\Admin2022-07-25 18:03:00 +0000
committerDESKTOP-AJSJJMA\Admin2022-07-25 18:03:00 +0000
commitf27b3fbe6e2fd9a56fefd3ac7f3d4966397df8ca (patch)
treec74c5a1e95c82f87499ba62d1fecf7439b743ffb /MAS/Separate-Files-Version/Check-Activation-Status-wmi.cmd
parentd62eeb9355accab60dd9cacabbb6ef79773adc24 (diff)
downloadMicrosoft-Activation-Scripts-f27b3fbe6e2fd9a56fefd3ac7f3d4966397df8ca.zip
1.6
Diffstat (limited to 'MAS/Separate-Files-Version/Check-Activation-Status-wmi.cmd')
-rw-r--r--MAS/Separate-Files-Version/Check-Activation-Status-wmi.cmd533
1 files changed, 533 insertions, 0 deletions
diff --git a/MAS/Separate-Files-Version/Check-Activation-Status-wmi.cmd b/MAS/Separate-Files-Version/Check-Activation-Status-wmi.cmd
new file mode 100644
index 0000000..6e9e948
--- /dev/null
+++ b/MAS/Separate-Files-Version/Check-Activation-Status-wmi.cmd
@@ -0,0 +1,533 @@
+<!-- : Begin batch script
+@setlocal DisableDelayedExpansion
+@echo off
+
+
+
+:: Check-Activation-Status-wmi.cmd
+:: 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 /rxc:".*" "%~nx0"
+if not %errorlevel%==0 (
+echo:
+echo Error: This is not a correct file. It has LF line ending issue.
+echo:
+echo Press any key to exit...
+pause >nul
+popd
+exit /b
+)
+popd
+
+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: wmic.exe is not responding in the system.
+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.
+)
+
+: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. KMS 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 {$_ -Ne 'InstalledGraceKey' -And $_ -Ne 'MigrationToV5Done' -And $_ -Ne 'test' -And $_ -Ne 'unknown'}
+ 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
+ $userId = $decodedLicense.Metadata.UserId
+ $identitiesRegkey = Get-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Office\16.0\Common\Identity\Identities\${userId}*" -ErrorAction Ignore
+ $licenseState = $null
+ If ((Get-Date) -Gt (Get-Date $decodedLicense.MetaData.NotAfter))
+ {
+ $licenseState = "RFM"
+ }
+ ElseIf (($decodedLicense.ExpiresOn -Eq $null) -Or
+ ((Get-Date) -Lt (Get-Date $decodedLicense.ExpiresOn)))
+ {
+ $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;
+ ReasonCode = $decodedLicense.ReasonCode;
+ NotBefore = $decodedLicense.Metadata.NotBefore;
+ NotAfter = $decodedLicense.Metadata.NotAfter;
+ NextRenewal = $decodedLicense.Metadata.RenewAfter;
+ Expiration = $decodedLicense.ExpiresOn;
+ 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;
+ ReasonCode = $decodedLicense.ReasonCode;
+ NotBefore = $decodedLicense.Metadata.NotBefore;
+ NotAfter = $decodedLicense.Metadata.NotAfter;
+ NextRenewal = $decodedLicense.Metadata.RenewAfter;
+ Expiration = $decodedLicense.ExpiresOn;
+ 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:
+::=================================================== \ No newline at end of file