Para no perder tiempo en acceder a la consola de administración y averiguar esta información, he preparado un script con PowerShell que, indicando el nombre de un servidor Citrix en la variable $nombre_host y ejecutándolo en cualquier otro host con los permisos suficientes muestra la información de las sesiones de Citrix activas:
# información de sesiones citrix
# nombre del servidor de Citrix
$nombre_host = hostname
# fecha/hora/minuto/segundo de la toma
$t = get-date
$anio = $t.year
$mes = $t.month
$dia = $t.day
$hora = $t.hour
$minuto = $t.minute
$segundo = $t.second
$tiempo = "$anio $mes $dia $hora $minuto $segundo"
# captura sesiones actuales del servidor de Citrix indicado
$sesiones = qwinsta /SERVER:$nombre_host
# elimina primera línea
$sesiones = $sesiones[1..$sesiones.length]
# inicia variables
$usuario = ""
$sesionid = 0
$total_cpu = 0
$mem = 0
foreach ( $sesion in $sesiones )
{
# si se trata de una sesión de citrix
if ( $sesion -match "wdica" )
{
$sesion = $sesion -replace “\s+”,” ”
$t = $sesion.split(" ")
# captura usuario e id de sesión
$usuario = $t[2]
$sesionid = $t[3]
# inicia total_cpu y mem para esta sesión/usuario
$total_cpu = 0
$mem = 0
# captura la memoria y el total de cpu de los procesos
# de cada sesión/usuario de citrix
$procesos = get-process | where {$_.sessionid -eq $sesionid}
foreach ( $proceso in $procesos )
{
$total_cpu += $proceso.cpu
$mem += $proceso.ws
}
$mem = [int]($mem / 1mb)
write-host $tiempo $nombre_host $usuario $total_cpu $mem
}
}
# nombre del servidor de Citrix
$nombre_host = hostname
# fecha/hora/minuto/segundo de la toma
$t = get-date
$anio = $t.year
$mes = $t.month
$dia = $t.day
$hora = $t.hour
$minuto = $t.minute
$segundo = $t.second
$tiempo = "$anio $mes $dia $hora $minuto $segundo"
# captura sesiones actuales del servidor de Citrix indicado
$sesiones = qwinsta /SERVER:$nombre_host
# elimina primera línea
$sesiones = $sesiones[1..$sesiones.length]
# inicia variables
$usuario = ""
$sesionid = 0
$total_cpu = 0
$mem = 0
foreach ( $sesion in $sesiones )
{
# si se trata de una sesión de citrix
if ( $sesion -match "wdica" )
{
$sesion = $sesion -replace “\s+”,” ”
$t = $sesion.split(" ")
# captura usuario e id de sesión
$usuario = $t[2]
$sesionid = $t[3]
# inicia total_cpu y mem para esta sesión/usuario
$total_cpu = 0
$mem = 0
# captura la memoria y el total de cpu de los procesos
# de cada sesión/usuario de citrix
$procesos = get-process | where {$_.sessionid -eq $sesionid}
foreach ( $proceso in $procesos )
{
$total_cpu += $proceso.cpu
$mem += $proceso.ws
}
$mem = [int]($mem / 1mb)
write-host $tiempo $nombre_host $usuario $total_cpu $mem
}
}
No hay comentarios:
Publicar un comentario