Citrix Powershell: Extraer licencias mediante WMI
Buscando una solución para que mi Zabbix pueda mostrarme el uso de licencias, encontré la forma de hacerlo vía Powershell mediante una consulta WMI.
La idea es conseguir extraer, tanto el número de licencias totales, las asignadas, las usadas y el tanto por cierto en uso para generar las alertas antes de que llegue a un límite que me genere problemas.
He pensado en WMI porque es la biblioteca de Windows, y todo se puede encontrar ahí, pero hay que saber como encontrarlo. Así que empezamos a jugar con comandos. Buscamos objetos WMI con el nombre Citrix:
1 |
Get-WmiObject -List | Where { $_.name -match 'Citrix'} |
También lo he intentado con clases CIM:
Get-CimClass -Namespace 'ROOT\CitrixLicensing' -ClassName Citrix_GT_License
Sigo probando:
PS C:\Program Files\Citrix\Licensing\SnapIn> Get-CimClass -Namespace 'ROOT\CitrixLicensing' -ClassName Citrix_GT_License | select -ExpandProperty cimclassproperties
Name : Count
Value :
CimType : UInt32
Flags : Property, ReadOnly, NullValue
Qualifiers : {Description, read}
ReferenceClassName :
Name : ExpirationDate
Value :
CimType : DateTime
Flags : Property, ReadOnly, NullValue
Qualifiers : {Description, read}
ReferenceClassName :
....
Después de muchas pruebas y errores, al final llegué a la conclusión que vía gráfica me iba a ir mejor. El proyecto WMI Explorer os ayudará en esto. Me indicó el Namespace y la propiedad que tenía que usar:
https://github.com/vinaypamnani/wmie2/releases
El script sería algo así:
# Obtendremos los datos mediante WMI
$licensePool = gwmi -class "Citrix_GT_License_Pool" -Namespace "ROOT\CitrixLicensing" -comp SRVLICENCIAS
# Devuelve todas las licencias
$licensePool | Select-Object @{n="Producto";e={$_.PLD}},
@{n="Instaladas";e={$_.Count}},
@{n="En Uso";e={$_.InUseCount}},
@{n="Disponibles";e={$_.PooledAvailable}},
@{n="% en Uso";e={($_.InUseCount/$_.Count)*100}}
Producto : XDT_ENT_UD
Instaladas : 165
En Uso : 111
Disponibles : 54
% en Uso : 67,2727272727273
Para completarlo lo usaremos de la siguiente forma, que ya nos devuelve una alerta:
GITHUB: https://gist.github.com/raulunzue/94eff02019b5089182fab573e9ede680
1 |
# Configuramos Variables
$Total = 0
$Usadas = 0
$PorcentajeUso = 0
$ReturnString = 0
$ReturnValor = 0
# Obtendremos los datos mediante WMI
$licensePool = gwmi -class "Citrix_GT_License_Pool" -Namespace "ROOT\CitrixLicensing" -comp SRVLICENCIAS
# Devuelve todas las licencias
$licensePool | Select-Object @{n="Producto";e={$_.PLD}},
@{n="Instaladas";e={$_.Count}},
@{n="En Uso";e={$_.InUseCount}},
@{n="Disponibles";e={$_.PooledAvailable}},
@{n="% en Uso";e={($_.InUseCount/$_.Count)*100}}
# Si tienes licencias MPS_ENT_CCU. Utilizaríamos para calcularlas lo siguiente:
#$LicensePool | ForEach-Object{ If ($_.PLD -eq "MPS_ENT_CCU"){
#$Total = $Total + $_.count
#$Usadas = $Usadas + $_.InUseCount
#}
#}
# Descomentar para confirmar que los valores son correctos
#"Total = ", $Total
#"En Uso = ", $Usadas
$PorcentajeUso = [Math]::Round($Total*100,0/$Usadas)
# Determinamos el código de retorno. Si tiene menos del 90%, OK, 90-97 Warning, 98-100 Error
switch ($PorcentajeUso)
{
{$PorcentajeUso -lt 90} {
$ReturnString = "OK, estamos por debajo del umbral del 90% de Uso"
$ReturnValor = 0
break
}
{$PorcentajeUso -ge 90 -and $PorcentajeUso -lt 98} {
$ReturnString = "WARNING: 90-97% Licencias en Uso"
$ReturnValor = 1
break
}
{$PorcentajeUso -ge 98} {
$ReturnString = "ALERTA: 98-100% Licencias en Uso"
$ReturnValor = 2
}
}
# Pintamos los valores
Write-Host $ReturnString
exit $ReturnValor
|
¿Te ha gustado la entrada SÍGUENOS EN TWITTER?
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?