Private/Test-XdLicense.ps1
Function Test-XdLicense { <# .SYNOPSIS Returns some simple stats on a License Server .DESCRIPTION Returns some simple stats on a License Server .PARAMETER LicenseServer Target License server to grab information from. .PARAMETER LicenseType Citrix License Type, commonly XDT / MPS .NOTES .CHANGE CONTROL Name Version Date Change Detail Adam Yarborough 1.0 20/06/2018 Function Creation #> [CmdletBinding()] Param( [parameter(Mandatory = $true, ValueFromPipeline = $true)]$LicenseServer, [parameter(Mandatory = $true, ValueFromPipeline = $true)]$LicenseType ) Begin { $ctxsnap = add-pssnapin Citrix.Licensing.* -ErrorAction SilentlyContinue $ctxsnap = get-pssnapin Citrix.Licensing.* -ErrorAction SilentlyContinue if ($null -eq $ctxsnap) { Write-Error "Citrix Licensing Powershell Snapin Load Failed" Write-Error "Cannot Load Citrix Licensing Powershell SDK" Return $false } else { Write-Verbose "Citrix Licensing SDK Snapin Loaded" } } Process { $Results = @() $Errors = @() $Cert = Get-LicCertificate -AdminAddress $LicenseServer $TotalAvailable = 0 $TotalIssued = 0 $LicResults = Get-LicInventory -AdminAddress $LicenseServer -CertHash $cert.CertHash foreach ($License in $LicResults) { if ($License.LicenseProductName -eq $LicenseType) { $TotalIssued += $License.LicensesInUse $TotalAvailable += ($License.LicensesAvailable - $License.LicenseOverdraft) } } Write-Verbose "TotalIssued = $TotalIssued" Write-Verbose "TotalAvailable = $TotalAvailable" Write-Verbose "LicenseType = $LicenseType" $Results += [PSCustomObject]@{ 'TotalIssued' = $TotalIssued 'TotalAvailable' = $TotalAvailable 'LicenseType' = $LicenseType 'Errors' = $Errors } return $Results } End { } } |