Private/Invoke-Rearm.ps1
|
function Invoke-Rearm { [CmdletBinding()] param( [Microsoft.Management.Infrastructure.CimSession]$CimSession, [CimInstance]$Service ) $licenseInfo = Get-LicenseStatus -CimSession $CimSession $status = $licenseInfo.LicenseStatus if ($null -eq $status) { throw 'License status cannot be collected. It is suggested to restart the computer.' } Write-Verbose "Current license status: $status" # Rearm is only meaningful for grace and non-genuine states $rearmableStatuses = @( [LicenseStatusCode]::OOBGrace, [LicenseStatusCode]::OOTGrace, [LicenseStatusCode]::NonGenuineGrace, [LicenseStatusCode]::ExtendedGrace ) $isRearmable = $status -in $rearmableStatuses Write-Verbose "Is rearmable: $isRearmable" if (-not $isRearmable) { Write-Warning "Rearm is not applicable for the current license status: $status" return } $Service | Invoke-SppCimMethod -MethodName ReArmWindows $Service | Invoke-SppCimMethod -MethodName RefreshLicenseStatus Write-Verbose 'Rearm completed. Please restart the system for the changes to take effect.' } |