Public/Get-WindowsTokenActivationLicense.ps1
|
#Requires -Version 5 <# .SYNOPSIS Lists installed token-based activation issuance licenses. .DESCRIPTION Returns structured information from the documented SoftwareLicensingTokenActivationLicense provider class. .INPUTS String[]. You can pass computer names through the pipeline. .OUTPUTS slmgr-ps.TokenActivationLicense. .EXAMPLE Get-WindowsTokenActivationLicense .EXAMPLE Get-WindowsTokenActivationLicense -Computer WS01 .LINK https://github.com/zbalkan/slmgr-ps #> function Get-WindowsTokenActivationLicense { [OutputType([PSCustomObject])] [CmdletBinding(PositionalBinding = $false)] param( [Parameter(Position = 0, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [AllowNull()] [string[]]$Computer = @('localhost'), [Parameter()] [AllowNull()] [PSCredential]$Credentials ) process { foreach ($c in $Computer) { $session = $null try { $session = Get-Session -Computer $c -Credentials $Credentials -ErrorAction Stop $licenses = @(Get-TokenActivationLicense -CimSession $session -ErrorAction Stop) foreach ($license in $licenses) { $expirationDate = $license.ExpirationDate if ($null -eq $expirationDate -or $expirationDate -eq [datetime]::MinValue) { $expirationDate = $null } $authorizationStatusCode = [uint32]$license.AuthorizationStatus $result = [PSCustomObject][ordered]@{ ComputerName = $c ID = $license.ID ILID = $license.ILID ILVID = [uint32]$license.ILVID AuthorizationStatusCode = $authorizationStatusCode AuthorizationStatus = '0x{0:X8}' -f $authorizationStatusCode ExpirationDate = $expirationDate Description = $license.Description AdditionalInfo = $license.AdditionalInfo } $result.PSObject.TypeNames.Insert(0, 'slmgr-ps.TokenActivationLicense') Write-Output $result } } finally { if ($null -ne $session) { Remove-CimSession -CimSession $session -ErrorAction Ignore | Out-Null } } } } } |