Lorsque vous ouvrez votre console Citrix Studio ou Director, vous remarquez qu’une session utilisateur peut avoir différents états. Elles peuvent en effet être Active, Connected ou encore Disconnected. C’est ce dernier cas qui m’intéresse. Dans certains cas, les utilisateurs ne se déconnectent pas toujours correctement via un LogOff au sein de l’infrastructure. Il est alors possible de forcer leur déconnexion avec le script PowerShell suivant :
# Calling the Citrix SDK CmdLets Add-PSSnapin Citrix* # We get ALL the Citrix sessions actived $all_sessions = Get-BrokerSession # For each session foreach ($session in $all_sessions) { # If the session is in "Disconnected" status if ($session.SessionState -eq "Disconnected") { # We're processing a true Logoff Stop-BrokerSession $session # Write-Host $timestamp $session.UserName "has been logged off on" $session.HostedMachineName } }
Dans cet exemple, je liste d’abord l’ensemble des sessions actuellement connectées puis pour chaque session qui se trouve dans un état « Disconnected » je force un LogOff de la session avec la CmdLet Stop-BrokerSession. Il ne reste alors plus qu’à planifier l’exécution de ce script périodiquement afin de faire le ménage dans les différentes sessions.
Notez qu’il est également possible de réaliser la même chose via les stratégies Citrix suivantes :
- Disconnected session timer
- Disconnected session timer interval
Plus d’informations sur la planification d’un script PowerShell sur l’article suivant via le Task Scheduler de Windows.