summaryrefslogtreecommitdiff
path: root/MAS/Separate-Files-Version/Check_Activation_Status.cmd
diff options
context:
space:
mode:
authorWindowsAddict2025-04-29 17:10:56 +0000
committerWindowsAddict2025-04-29 17:10:56 +0000
commit5872b7df53cb1d0e4316860897a0725695dc4864 (patch)
tree2c27c8cbc0221ffcb80a0f1cd8287efed533d408 /MAS/Separate-Files-Version/Check_Activation_Status.cmd
parentb8ad749bac256882fd5ec1c3b2924ff86e681c90 (diff)
downloadMicrosoft-Activation-Scripts-5872b7df53cb1d0e4316860897a0725695dc4864.zip
3.1
Added Ohook support for OSPP based Office on Vista and later
Diffstat (limited to 'MAS/Separate-Files-Version/Check_Activation_Status.cmd')
-rw-r--r--MAS/Separate-Files-Version/Check_Activation_Status.cmd387
1 files changed, 162 insertions, 225 deletions
diff --git a/MAS/Separate-Files-Version/Check_Activation_Status.cmd b/MAS/Separate-Files-Version/Check_Activation_Status.cmd
index 104a856..458b486 100644
--- a/MAS/Separate-Files-Version/Check_Activation_Status.cmd
+++ b/MAS/Separate-Files-Version/Check_Activation_Status.cmd
@@ -201,12 +201,14 @@ function BoolToWStr($bVal) {
}
function InitializePInvoke($LaDll, $bOffice) {
+ $LaName = [IO.Path]::GetFileNameWithoutExtension($LaDll)
+ $SLApp = $NT7 -Or $bOffice -Or ($LaName -EQ 'sppc' -And [Diagnostics.FileVersionInfo]::GetVersionInfo("$SysPath\sppc.dll").FilePrivatePart -GE 16501)
+ $Win32 = $null
+
$Marshal = [System.Runtime.InteropServices.Marshal]
- $Module = [AppDomain]::CurrentDomain.DefineDynamicAssembly((Get-Random), 'Run').DefineDynamicModule((Get-Random), $False)
- $SLApp = $NT7 -Or $bOffice -Or ($LaDll -EQ 'sppc.dll' -And [Diagnostics.FileVersionInfo]::GetVersionInfo("$SysPath\sppc.dll").FilePrivatePart -GE 16501)
+ $Module = [AppDomain]::CurrentDomain.DefineDynamicAssembly(($LaName+"_Assembly"), 'Run').DefineDynamicModule(($LaName+"_Module"), $False)
+ $Class = $Module.DefineType(($LaName+"_Methods"), 'Public, Abstract, Sealed, BeforeFieldInit', [Object], 0)
- $Win32 = $null
- $Class = $Module.DefineType((Get-Random), 'Public, Abstract, Sealed, BeforeFieldInit', [Object], 0)
$Class.DefinePInvokeMethod('SLClose', $LaDll, 22, 1, [Int32], @([IntPtr]), 1, 3).SetImplementationFlags(128)
$Class.DefinePInvokeMethod('SLOpen', $LaDll, 22, 1, [Int32], @([IntPtr].MakeByRefType()), 1, 3).SetImplementationFlags(128)
$Class.DefinePInvokeMethod('SLGenerateOfflineInstallationId', $LaDll, 22, 1, [Int32], @([IntPtr], [Guid].MakeByRefType(), [IntPtr].MakeByRefType()), 1, 3).SetImplementationFlags(128)
@@ -255,91 +257,69 @@ function SlGetInfoIID($SkuId)
{
return $null
}
-
- $rData = $Marshal::PtrToStringUni($bData)
- $Marshal::FreeHGlobal($bData)
- return $rData
+ else
+ {
+ return $Marshal::PtrToStringUni($bData)
+ }
}
-function SlGetInfoSku($SkuId, $Value)
-{
- $tData = 0
- $cData = 0
- $bData = 0
-
- $ret = $Win32::SLGetProductSkuInformation(
- $hSLC,
- [ref][Guid]$SkuId,
- $Value,
- [ref]$tData,
- [ref]$cData,
- [ref]$bData
- )
-
- if ($ret -Or !$cData)
+function SlReturnData($hrRet, $tData, $cData, $bData) {
+ if ($hrRet -NE 0 -Or $cData -EQ 0)
{
return $null
}
-
if ($tData -EQ 1)
{
- $rData = $Marshal::PtrToStringUni($bData)
+ return $Marshal::PtrToStringUni($bData)
}
elseif ($tData -EQ 4)
{
- $rData = $Marshal::ReadInt32($bData)
+ return $Marshal::ReadInt32($bData)
}
elseif ($tData -EQ 3 -And $cData -EQ 8)
{
- $rData = $Marshal::ReadInt64($bData)
+ return $Marshal::ReadInt64($bData)
}
else
{
- $rData = $null
+ return $null
}
-
- $Marshal::FreeHGlobal($bData)
- return $rData
}
-function SlGetInfoService($Value)
+function SlGetInfoPKey($PkeyId, $Value)
{
$tData = 0
$cData = 0
$bData = 0
- $ret = $Win32::SLGetServiceInformation(
+ $hrRet = $Win32::SLGetPKeyInformation(
$hSLC,
+ [ref][Guid]$PkeyId,
$Value,
[ref]$tData,
[ref]$cData,
[ref]$bData
)
- if ($ret -Or !$cData)
- {
- return $null
- }
+ return SlReturnData $hrRet $tData $cData $bData
+}
- if ($tData -EQ 1)
- {
- $rData = $Marshal::PtrToStringUni($bData)
- }
- elseif ($tData -EQ 4)
- {
- $rData = $Marshal::ReadInt32($bData)
- }
- elseif ($tData -EQ 3 -And $cData -EQ 8)
- {
- $rData = $Marshal::ReadInt64($bData)
- }
- else
- {
- $rData = $null
- }
+function SlGetInfoSku($SkuId, $Value)
+{
+ $tData = 0
+ $cData = 0
+ $bData = 0
- $Marshal::FreeHGlobal($bData)
- return $rData
+ $hrRet = $Win32::SLGetProductSkuInformation(
+ $hSLC,
+ [ref][Guid]$SkuId,
+ $Value,
+ [ref]$tData,
+ [ref]$cData,
+ [ref]$bData
+ )
+
+ return SlReturnData $hrRet $tData $cData $bData
}
function SlGetInfoApp($AppId, $Value)
@@ -348,7 +328,7 @@ function SlGetInfoApp($AppId, $Value)
$cData = 0
$bData = 0
- $ret = $Win32::SLGetApplicationInformation(
+ $hrRet = $Win32::SLGetApplicationInformation(
$hSLC,
[ref][Guid]$AppId,
$Value,
@@ -357,80 +337,49 @@ function SlGetInfoApp($AppId, $Value)
[ref]$bData
)
- if ($ret -Or !$cData)
- {
- return $null
- }
-
- if ($tData -EQ 1)
- {
- $rData = $Marshal::PtrToStringUni($bData)
- }
- elseif ($tData -EQ 4)
- {
- $rData = $Marshal::ReadInt32($bData)
- }
- elseif ($tData -EQ 3 -And $cData -EQ 8)
- {
- $rData = $Marshal::ReadInt64($bData)
- }
- else
- {
- $rData = $null
- }
-
- $Marshal::FreeHGlobal($bData)
- return $rData
-}
-
-function SlGetInfoSvcApp($strApp, $Value)
-{
- if ($SLApp)
- {
- $rData = SlGetInfoApp $strApp $Value
- }
- else
- {
- $rData = SlGetInfoService $Value
- }
- return $rData
+ return SlReturnData $hrRet $tData $cData $bData
}
-function SlGetInfoPKey($PkeyId, $Value)
+function SlGetInfoService($Value)
{
+ $tData = 0
$cData = 0
$bData = 0
- $ret = $Win32::SLGetPKeyInformation(
+ $hrRet = $Win32::SLGetServiceInformation(
$hSLC,
- [ref][Guid]$PKeyId,
$Value,
- [ref]$null,
+ [ref]$tData,
[ref]$cData,
[ref]$bData
)
- if ($ret -Or !$cData)
+ return SlReturnData $hrRet $tData $cData $bData
+}
+
+function SlGetInfoSvcApp($strApp, $Value)
+{
+ if ($SLApp)
{
- return $null
+ return SlGetInfoApp $strApp $Value
+ }
+ else
+ {
+ return SlGetInfoService $Value
}
-
- $rData = $Marshal::PtrToStringUni($bData)
- $Marshal::FreeHGlobal($bData)
- return $rData
}
function SlGetInfoLicensing($AppId, $SkuId)
{
- $LicenseStatus = 0
- $GracePeriodRemaining = 0
+ $dwStatus = 0
+ $dwGrace = 0
$hrReason = 0
- $EvaluationEndDate = 0
+ $qwValidity = 0
$cStatus = 0
$pStatus = 0
- $ret = $Win32::SLGetLicensingStatusInformation(
+ $hrRet = $Win32::SLGetLicensingStatusInformation(
$hSLC,
[ref][Guid]$AppId,
[ref][Guid]$SkuId,
@@ -439,80 +388,46 @@ function SlGetInfoLicensing($AppId, $SkuId)
[ref]$pStatus
)
- if ($ret -Or !$cStatus)
+ if ($hrRet -NE 0 -Or $cStatus -EQ 0)
{
return
}
[IntPtr]$ppStatus = [Int64]$pStatus + [Int64]40 * ($cStatus - 1)
- $eStatus = $Marshal::ReadInt32($ppStatus, 16)
- $GracePeriodRemaining = $Marshal::ReadInt32($ppStatus, 20)
+ $dwStatus = $Marshal::ReadInt32($ppStatus, 16)
+ $dwGrace = $Marshal::ReadInt32($ppStatus, 20)
$hrReason = $Marshal::ReadInt32($ppStatus, 28)
- $EvaluationEndDate = $Marshal::ReadInt64($ppStatus, 32)
+ $qwValidity = $Marshal::ReadInt64($ppStatus, 32)
- if ($eStatus -EQ 3)
+ if ($dwStatus -EQ 3)
{
- $eStatus = 5
+ $dwStatus = 5
}
- if ($eStatus -EQ 2)
+ if ($dwStatus -EQ 2)
{
if ($hrReason -EQ 0x4004F00D)
{
- $eStatus = 3
+ $dwStatus = 3
}
elseif ($hrReason -EQ 0x4004F065)
{
- $eStatus = 4
+ $dwStatus = 4
}
elseif ($hrReason -EQ 0x4004FC06)
{
- $eStatus = 6
+ $dwStatus = 6
}
}
- $LicenseStatus = $eStatus
- $Marshal::FreeHGlobal($pStatus)
return
}
-function SlCheckInfo($SkuId, $Value)
-{
- $cData = 0
- $bData = 0
-
- $ret = $Win32::SLGetProductSkuInformation(
- $hSLC,
- [ref][Guid]$SkuId,
- $Value,
- [ref]$null,
- [ref]$cData,
- [ref]$bData
- )
-
- if ($ret -Or !$cData)
- {
- return $false
- }
-
- if ($Value -EQ "pkeyId")
- {
- $rData = $Marshal::PtrToStringUni($bData)
- }
- else
- {
- $rData = $true
- }
-
- $Marshal::FreeHGlobal($bData)
- return $rData
-}
-
function SlGetInfoSLID($AppId)
{
$cReturnIds = 0
$pReturnIds = 0
- $ret = $Win32::SLGetSLIDList(
+ $hrRet = $Win32::SLGetSLIDList(
$hSLC,
0,
[ref][Guid]$AppId,
@@ -521,7 +436,7 @@ function SlGetInfoSLID($AppId)
[ref]$pReturnIds
)
- if ($ret -Or !$cReturnIds)
+ if ($hrRet -NE 0 -Or $cReturnIds -EQ 0)
{
return
}
@@ -536,17 +451,16 @@ function SlGetInfoSLID($AppId)
$bytes = New-Object byte[] 16
$Marshal::Copy([Int64]$pReturnIds + [Int64]16 * $i, $bytes, 0, 16)
$actid = ([Guid]$bytes).Guid
- $gPPK = SlCheckInfo $actid "pkeyId"
- $gAdd = SlCheckInfo $actid "DependsOn"
+ $gPPK = SlGetInfoSku $actid "pkeyId"
+ $gAdd = SlGetInfoSku $actid "DependsOn"
if ($All.IsPresent) {
- if (!$gPPK -And $gAdd) { $a1List += @{id = $actid; pk = $null; ex = $true} }
- if (!$gPPK -And !$gAdd) { $a2List += @{id = $actid; pk = $null; ex = $false} }
+ if ($null -EQ $gPPK -And $null -NE $gAdd) { $a1List += @{id = $actid; pk = $null; ex = $true} }
+ if ($null -EQ $gPPK -And $null -EQ $gAdd) { $a2List += @{id = $actid; pk = $null; ex = $false} }
}
- if ($gPPK -And $gAdd) { $a3List += @{id = $actid; pk = $gPPK; ex = $true} }
- if ($gPPK -And !$gAdd) { $a4List += @{id = $actid; pk = $gPPK; ex = $false} }
+ if ($null -NE $gPPK -And $null -NE $gAdd) { $a3List += @{id = $actid; pk = $gPPK; ex = $true} }
+ if ($null -NE $gPPK -And $null -EQ $gAdd) { $a4List += @{id = $actid; pk = $gPPK; ex = $false} }
}
- $Marshal::FreeHGlobal($pReturnIds)
return ($a1List + $a2List + $a3List + $a4List)
}
@@ -603,7 +517,7 @@ function DetectSubscription {
function DetectAdbaClient
{
- $propADBA | foreach { set $_ (SlGetInfoSku $ID $_) }
+ $propADBA | foreach { set $_ (SlGetInfoSku $licID $_) }
CONOUT "`nAD Activation client information:"
CONOUT " Object Name: $ADActivationObjectName"
CONOUT " Domain Name: $ADActivationObjectDN"
@@ -613,7 +527,7 @@ function DetectAdbaClient
function DetectAvmClient
{
- $propAVMA | foreach { set $_ (SlGetInfoSku $ID $_) }
+ $propAVMA | foreach { set $_ (SlGetInfoSku $licID $_) }
CONOUT "`nAutomatic VM Activation client information:"
if (-Not [String]::IsNullOrEmpty($InheritedActivationId)) {
CONOUT " Guest IAID: $InheritedActivationId"
@@ -644,7 +558,6 @@ function DetectKmsHost
if (-Not $IsKeyManagementService) {
return
}
- if ($null -NE $ExpireMsg) {CONOUT "`n $ExpireMsg"}
if ($Vista -Or $NT5) {
$regk = $SLKeyPath
@@ -697,9 +610,9 @@ function DetectKmsHost
function DetectKmsClient
{
- if ($strSLP -EQ $wslp -And $NT8)
+ if ($win8)
{
- $VLType = strGetRegistry ($SPKeyPath + '\' + $strApp + '\' + $ID) "VLActivationType"
+ $VLType = strGetRegistry ($SPKeyPath + '\' + $strApp + '\' + $licID) "VLActivationType"
if ($null -EQ $VLType) {$VLType = strGetRegistry ($SPKeyPath + '\' + $strApp) "VLActivationType"}
if ($null -EQ $VLType) {$VLType = strGetRegistry ($SPKeyPath) "VLActivationType"}
if ($null -EQ $VLType -Or $VLType -GT 3) {$VLType = 0}
@@ -713,7 +626,7 @@ function DetectKmsClient
}
if ($NT7 -Or $strSLP -EQ $oslp) {
- $propKMSClient | foreach { set $_ (SlGetInfoSku $ID $_) }
+ $propKMSClient | foreach { set $_ (SlGetInfoSku $licID $_) }
if ($strSLP -EQ $oslp) {$regk = $OPKeyPath} else {$regk = $SPKeyPath}
$KMSCaching = strGetRegistry $regk "DisableKeyManagementServiceHostCaching"
if (-Not $KMSCaching) {$KMSCaching = "TRUE"} else {$KMSCaching = BoolToWStr (!$KMSCaching)}
@@ -771,58 +684,90 @@ function DetectKmsClient
function GetResult($strSLP, $strApp, $entry)
{
- $ID = $entry.id
- $propPrd | foreach { set $_ (SlGetInfoSku $ID $_) }
- . SlGetInfoLicensing $strApp $ID
+ $licID = $entry.id
+ $propPrd | foreach { set $_ (SlGetInfoSku $licID $_) }
+ . SlGetInfoLicensing $strApp $licID
+ $LicenseStatus = $dwStatus
+ $LicReason = $hrReason
+ $EvaluationEndDate = $qwValidity
+ $gprMnt = $dwGrace
+
+ $pkid = $entry.pk
+ $isPPK = $null -NE $pkid
+
+ $add_on = $Name.IndexOf("add-on for", 5)
+ if ($add_on -NE -1) {
+ $Name = $Name.Substring(0, $add_on + 7)
+ }
+
+ $licPHN = "empty"
+ if ($Dlv -Or $All.IsPresent) {
+ $licPHN = SlGetInfoSku $licID "msft:sl/EUL/PHONE/PUBLIC"
+ }
+
+ if ($LicenseStatus -EQ 0 -And !$isPPK) {
+ & $isAll
+ CONOUT "Name: $Name"
+ CONOUT "Description: $Description"
+ CONOUT "Activation ID: $licID"
+ CONOUT "License Status: Unlicensed"
+ if ($licPHN -NE "empty") {
+ $gPHN = [String]::IsNullOrEmpty($licPHN) -NE $true
+ CONOUT "Phone activatable: $($gPHN.ToString())"
+ }
+ return
+ }
$winID = ($strApp -EQ $winApp)
$winPR = ($winID -And -Not $entry.ex)
$Vista = ($winID -And $NT6 -And -Not $NT7)
$NT5 = ($strSLP -EQ $wslp -And $winbuild -LT 6001)
+ $win8 = ($strSLP -EQ $wslp -And $NT8)
$reapp = ("Windows", "App")[!$winID]
$prmnt = ("machine", "product")[!$winPR]
- if ($Description | Select-String "VOLUME_KMSCLIENT") {$cKmsClient = 1; $_mTag = "Volume"}
- if ($Description | Select-String "TIMEBASED_") {$cTblClient = 1; $_mTag = "Timebased"}
- if ($Description | Select-String "VIRTUAL_MACHINE_ACTIVATION") {$cAvmClient = 1; $_mTag = "Automatic VM"}
- if ($null -EQ $cKmsClient) {
- if ($Description | Select-String "VOLUME_KMS") {$cKmsServer = 1}
- }
+ if ($Description.Contains("VOLUME_KMSCLIENT")) {$cKmsClient = 1; $actTag = "Volume"}
+ if ($Description.Contains("TIMEBASED_")) {$cTblClient = 1; $actTag = "Timebased"}
+ if ($Description.Contains("VIRTUAL_MACHINE_ACTIVATION")) {$cAvmClient = 1; $actTag = "Automatic VM"}
+ if ($null -EQ $cKmsClient -And $Description.Contains("VOLUME_KMS")) {$cKmsServer = 1}
- $_gpr = [Math]::Round($GracePeriodRemaining/1440)
- if ($_gpr -GT 0) {
- $_xpr = [DateTime]::Now.AddMinutes($GracePeriodRemaining).ToString('yyyy-MM-dd hh:mm:ss tt')
+ $gprDay = [Math]::Round($gprMnt/1440)
+ $_xpr = ""
+ $inGrace = $false
+ if ($gprMnt -GT 0) {
+ $_xpr = [DateTime]::Now.AddMinutes($gprMnt).ToString('yyyy-MM-dd hh:mm:ss tt')
+ $inGrace = $true
}
- $LicenseReason = '0x{0:X}' -f $hrReason
- $LicenseMsg = "Time remaining: $GracePeriodRemaining minute(s) ($_gpr day(s))"
+ $LicenseMsg = "Time remaining: $gprMnt minute(s) ($gprDay day(s))"
if ($LicenseStatus -EQ 0) {
$LicenseInf = "Unlicensed"
$LicenseMsg = $null
}
if ($LicenseStatus -EQ 1) {
$LicenseInf = "Licensed"
- if ($GracePeriodRemaining -EQ 0) {
+ if ($gprMnt -EQ 0) {
$LicenseMsg = $null
$ExpireMsg = "The $prmnt is permanently activated."
} else {
- $LicenseMsg = "$_mTag activation expiration: $GracePeriodRemaining minute(s) ($_gpr day(s))"
- if ($null -NE $_xpr) {$ExpireMsg = "$_mTag activation will expire $_xpr"}
+ $LicenseMsg = "$actTag activation expiration: $gprMnt minute(s) ($gprDay day(s))"
+ if ($inGrace) {$ExpireMsg = "$actTag activation will expire $_xpr"}
}
}
if ($LicenseStatus -EQ 2) {
$LicenseInf = "Initial grace period"
- if ($null -NE $_xpr) {$ExpireMsg = "Initial grace period ends $_xpr"}
+ if ($inGrace) {$ExpireMsg = "$LicenseInf ends $_xpr"}
}
if ($LicenseStatus -EQ 3) {
$LicenseInf = "Additional grace period (KMS license expired or hardware out of tolerance)"
- if ($null -NE $_xpr) {$ExpireMsg = "Additional grace period ends $_xpr"}
+ if ($inGrace) {$ExpireMsg = "Additional grace period ends $_xpr"}
}
if ($LicenseStatus -EQ 4) {
$LicenseInf = "Non-genuine grace period"
- if ($null -NE $_xpr) {$ExpireMsg = "Non-genuine grace period ends $_xpr"}
+ if ($inGrace) {$ExpireMsg = "$LicenseInf ends $_xpr"}
}
if ($LicenseStatus -EQ 5 -And -Not $NT5) {
+ $LicenseReason = '0x{0:X}' -f $LicReason
$LicenseInf = "Notification"
$LicenseMsg = "Notification Reason: $LicenseReason"
if ($LicenseReason -EQ "0xC004F00F") {if ($null -NE $cKmsClient) {$LicenseMsg = $LicenseMsg + " (KMS license expired)."} else {$LicenseMsg = $LicenseMsg + " (hardware out of tolerance)."}}
@@ -835,36 +780,35 @@ function GetResult($strSLP, $strApp, $entry)
}
if ($LicenseStatus -EQ 6 -And -Not $Vista -And -Not $NT5) {
$LicenseInf = "Extended grace period"
- if ($null -NE $_xpr) {$ExpireMsg = "Extended grace period ends $_xpr"}
+ if ($inGrace) {$ExpireMsg = "$LicenseInf ends $_xpr"}
}
- $pkid = $entry.pk
- if ($null -NE $pkid) {
+ if ($isPPK) {
$propPkey | foreach { set $_ (SlGetInfoPKey $pkid $_) }
}
- if ($winPR -And $null -NE $PartialProductKey -And -Not $NT8) {
- $uxd = SlGetInfoSku $ID 'UXDifferentiator'
+ if ($winPR -And $isPPK -And -Not $NT8) {
+ $uxd = SlGetInfoSku $licID 'UXDifferentiator'
$script:primary += @{
- aid = $ID;
+ aid = $licID;
ppk = $PartialProductKey;
chn = $Channel;
lst = $LicenseStatus;
- lcr = $hrReason;
- ged = $GracePeriodRemaining;
+ lcr = $LicReason;
+ ged = $gprMnt;
evl = $EvaluationEndDate;
dff = $uxd
}
}
- if ($IID -And $null -NE $PartialProductKey) {
- $OfflineInstallationId = SlGetInfoIID $ID
+ if ($IID -And $isPPK) {
+ $OfflineInstallationId = SlGetInfoIID $licID
}
if ($Dlv) {
- if ($strSLP -EQ $wslp -And $NT8)
+ if ($win8)
{
- $RemainingSkuReArmCount = SlGetInfoSku $ID 'RemainingRearmCount'
+ $RemainingSkuReArmCount = SlGetInfoSku $licID 'RemainingRearmCount'
$RemainingAppReArmCount = SlGetInfoApp $strApp 'RemainingRearmCount'
}
else
@@ -884,16 +828,10 @@ function GetResult($strSLP, $strApp, $entry)
}
}
- if ($Dlv -Or $All.IsPresent) {
- $gPHN = SlCheckInfo $ID "msft:sl/EUL/PHONE/PUBLIC"
- }
-
- $add_on = $Name.IndexOf("add-on for", 5)
-
& $isAll
- if ($add_on -EQ -1) {CONOUT "Name: $Name"} else {CONOUT "Name: $($Name.Substring(0, $add_on + 7))"}
+ CONOUT "Name: $Name"
CONOUT "Description: $Description"
- CONOUT "Activation ID: $ID"
+ CONOUT "Activation ID: $licID"
if ($null -NE $DigitalPID) {CONOUT "Extended PID: $DigitalPID"}
if ($null -NE $DigitalPID2 -And $Dlv) {CONOUT "Product ID: $DigitalPID2"}
if ($null -NE $OfflineInstallationId -And $IID) {CONOUT "Installation ID: $OfflineInstallationId"}
@@ -905,9 +843,9 @@ function GetResult($strSLP, $strApp, $entry)
$EED = [DateTime]::FromFileTimeUtc($EvaluationEndDate).ToString('yyyy-MM-dd hh:mm:ss tt')
CONOUT "Evaluation End Date: $EED UTC"
}
- if ($LicenseStatus -NE 1 -And $null -NE $gPHN) {
- $gPHN = $gPHN.ToString()
- CONOUT "Phone activatable: $gPHN"
+ if ($LicenseStatus -NE 1 -And $licPHN -NE "empty") {
+ $gPHN = [String]::IsNullOrEmpty($licPHN) -NE $true
+ CONOUT "Phone activatable: $($gPHN.ToString())"
}
if ($Dlv) {
if ($null -NE $RemainingSLReArmCount) {
@@ -922,11 +860,11 @@ function GetResult($strSLP, $strApp, $entry)
CONOUT "Trusted time: $TTD"
}
}
- if ($null -EQ $PartialProductKey) {
+ if (!$isPPK) {
return
}
- if ($strSLP -EQ $wslp -And $NT8 -And $VLActivationType -EQ 1) {
+ if ($win8 -And $VLActivationType -EQ 1) {
DetectAdbaClient
}
@@ -934,7 +872,7 @@ function GetResult($strSLP, $strApp, $entry)
DetectAvmClient
}
- $chkSub = ($winPR -And $cSub)
+ $chkSub = ($winPR -And $isSub)
$chkSLS = ($null -NE $cKmsClient -Or $null -NE $cKmsServer -Or $chkSub)
@@ -943,15 +881,14 @@ function GetResult($strSLP, $strApp, $entry)
return
}
- if ($null -NE $cKmsServer) {
- DetectKmsHost
- }
-
if ($null -NE $cKmsClient) {
DetectKmsClient
}
- if ($null -EQ $cKmsServer) {
+ if ($null -NE $cKmsServer) {
+ if ($null -NE $ExpireMsg) {CONOUT "`n $ExpireMsg"}
+ DetectKmsHost
+ } else {
if ($null -NE $ExpireMsg) {CONOUT "`n $ExpireMsg"}
}
@@ -1368,14 +1305,14 @@ function clcGetExpireKrn
$cData = 0
$bData = 0
- $ret = $Win32::SLGetWindowsInformation(
+ $hrRet = $Win32::SLGetWindowsInformation(
"Kernel-ExpirationDate",
[ref]$tData,
[ref]$cData,
[ref]$bData
)
- if ($ret -Or !$cData -Or $tData -NE 3)
+ if ($hrRet -Or !$cData -Or $tData -NE 3)
{
return $null
}
@@ -1390,7 +1327,7 @@ function clcGetExpireKrn
$rData = '{0}/{1}/{2}:{3}:{4}:{5}' -f $year, $Marshal::ReadInt16($bData, 2), $Marshal::ReadInt16($bData, 4), $Marshal::ReadInt16($bData, 6), $Marshal::ReadInt16($bData, 8), $Marshal::ReadInt16($bData, 10)
}
- $Marshal::FreeHGlobal($bData)
+ #$Marshal::FreeHGlobal($bData)
return $rData
}
@@ -1426,12 +1363,12 @@ function clcGetGenuineState($AppId)
$dwGenuine = 0
if ($NT7) {
- $ret = $Win32::SLIsWindowsGenuineLocal([ref]$dwGenuine)
+ $hrRet = $Win32::SLIsWindowsGenuineLocal([ref]$dwGenuine)
} else {
- $ret = $Win32::SLIsGenuineLocal([ref][Guid]$AppId, [ref]$dwGenuine, 0)
+ $hrRet = $Win32::SLIsGenuineLocal([ref][Guid]$AppId, [ref]$dwGenuine, 0)
}
- if ($ret)
+ if ($hrRet)
{
$dwGenuine = 4
}
@@ -1499,7 +1436,7 @@ $osls = "OfficeSoftwareProtectionService"
$winApp = "55c92734-d682-4d71-983e-d6ec3f16059f"
$o14App = "59a52881-a989-479d-af46-f275c6370663"
$o15App = "0ff1ce15-a989-479d-af46-f275c6370663"
-$cSub = ($winbuild -GE 26000) -And (Select-String -Path "$SysPath\wbem\sppwmi.mof" -Encoding unicode -Pattern "SubscriptionType")
+$isSub = ($winbuild -GE 26000) -And (Select-String -Path "$SysPath\wbem\sppwmi.mof" -Encoding unicode -Pattern "SubscriptionType")
$DllDigital = ($winbuild -GE 14393) -And (Test-Path "$SysPath\EditionUpgradeManagerObj.dll")
$DllSubscription = ($winbuild -GE 14393) -And (Test-Path "$SysPath\Clipc.dll")
$VLActTypes = @("All", "AD", "KMS", "Token")