Citrix License Usage Monitoring using PowerShell


The below PowerShell script could be used to deliver automated emails on the Citrix License usage for Citrix Admins.

Where do you run this script from?

Citrix License Server

How do you run this?

The script could be saved as a file with an extension of .ps1

Also ensure that you have a folder called report_do_not_delete created in the C: drive on the license server. Also, make the relevant changes in the script marked in Red. Run the script as a scheduled task at a specific time to receive the license usage reports in your mailbox or run it manually from a PowerShell window in Admin mode

#Region Settings
#Your License Server
$CitrixLicenseServer = “yourlicenseservername”

#Do you want to report on licenses with 0 users?
$ShowUnusedLicenses = $true

#Toggle an alert above this percentage of licenses used
$UsageAlertThreshold = 0

#EndRegion Settings

#Region CollectData
#retrieve license information from the license server
$LicenseData = Get-WmiObject -class “Citrix_GT_License_Pool” -namespace “ROOT\CitrixLicensing” -ComputerName $CitrixLicenseServer

$usageReport = @()
$LicenseData | select-object pld -unique | foreach {
$CurrentLicenseInfo = “” | Select-Object License, Count, Usage, pctUsed, Alert
$CurrentLicenseInfo.License = $_.pld
$CurrentLicenseInfo.Count = ($LicenseData | where-object {$_.PLD -eq $CurrentLicenseInfo.License } | measure-object -property Count -sum).sum
$CurrentLicenseInfo.Usage = ($LicenseData | where-object {$_.PLD -eq $CurrentLicenseInfo.License } | measure-object -property InUseCount -sum).sum
$CurrentLicenseInfo.pctUsed = [Math]::Round($CurrentLicenseInfo.Usage / $CurrentLicenseInfo.Count * 100,2)
$CurrentLicenseInfo.Alert = ($CurrentLicenseInfo.pctUsed -gt $UsageAlertThreshold)
if ($ShowUnusedLicenses -and $CurrentLicenseInfo.Usage -eq 0) {
$usageReport += $CurrentLicenseInfo
} elseif ($CurrentLicenseInfo.Usage -ne 0) {
$usageReport += $CurrentLicenseInfo
}
}
#EndRegion CollectData
$usageReport |Select-Object @{name=’Date-time’;Expression={Get-Date} },License,Count,Usage,PctUsed,Alert|ft -AutoSize|Out-File -Append C:\report_do_not_delete\$(get-date -uformat “%Y-%m-%d”).txt
#$usageReport | Format-Table -AutoSize | out-file “C:\reports\usagereport.txt”

#mail
Send-MailMessage -From “sender@sample.com” -To “receiver@sample.com” -Subject “Citrix XenApp license usage – Daily Report” -Body “Citrix XenApp license usage – Daily Report” -SmtpServer “smtp.sample.com” -Attachments “C:\report_do_not_delete\$(get-date -uformat “%Y-%m-%d”).txt”


Advertisements