Citrix: Script cerrar sesiones
Aunque ya os he mostrado alguna vez como cerrar sesiones automáticamente con una tarea programada en otras entradas, las formas de hacer estas cosas son infinitas.
Hoy os muestro otra forma diferente. Requisitos:
- Se genera en el delivery controller
- Crear un usuario de servicio para lanzarla
- Darle a ese usuario permisos de ejecución para la tarea (administrador local, por ejemplo)
- Generar carpeta c:\scripts
- Crear PS1 con este contenido:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# Cargamos modulo Add-PSSnapin Citrix.Broker.Admin.V2 #Obtenemos las sesiones (Get-BrokerSession | Select-Object -Property BrokeringUserName | Format-Wide -Column 1 | Out-String) | Set-Content C:\Scripts\Usuario.txt # Limpiamos los espacios en blanco (gc C:\Scripts\Usuarios.txt) | ? {$_.trim() -ne "" } | Set-Content C:\Scripts\Usuarios.txt $Existe=C:\Scripts\Usuarios.txt #Cerramos todas las sesiones de los usuarios detectadas If ($Existe -eq $True) { ForEach ($user in $(Get-Content C:\Scripts\Usuarios.txt)) { # Generamos log $date= Get-Date #$log = Write-Output "$date, Forzamos cierre sesion de $user" Add-Content "$date, Forzamos cierre sesion de $user" -Path "C:\Scripts\sesiones-cerradas.log" Get-BrokerSession -Username $user | Stop-BrokerSession } } Else { # Generamos log $date= Get-Date $log = Write-Output "$date, No hay sesiones que cerrar" Add-Content $log -Path "C:\Scripts\sesiones-cerradas.log" } |
Os dejo otro script sobre la misma base:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# Cargamos modulo Add-PSSnapin Citrix.Broker.Admin.V2 #Obtenemos las sesiones $sesiones=Get-BrokerSession | Select-Object Username | Set-Content C:\Scripts\Usuario.txt # Limpiamos los espacios en blanco (gc C:\Scripts\Usuario.txt) | ? {$_.trim() -ne "" } | Set-Content C:\Scripts\Usuario.txt (gc C:\Scripts\Usuario.txt) -replace ("@{UserName=", "") -replace ("}", "") | Set-Content C:\Scripts\Usuario.txt (gc C:\Scripts\Usuario.txt) | ? {$_.trim() -ne "" } | Set-Content C:\Scripts\Usuario.txt $Existe=(gc C:\Scripts\Usuario.txt) #Cerramos todas las sesiones de los usuarios detectadas If ($Existe) { ForEach ($user in $(Get-Content C:\Scripts\Usuario.txt)) { # Generamos log $date= Get-Date #$log = Write-Output "$date, Forzamos cierre sesion de $user" Add-Content "$date, Forzamos cierre sesion de $user" -Path "C:\Scripts\sesiones-cerradas.log" Get-BrokerSession -Username $user | Stop-BrokerSession } } Else { # Generamos log $date= Get-Date $log = Write-Output "$date, No hay sesiones que cerrar" Add-Content $log -Path "C:\Scripts\sesiones-cerradas.log" } Remove-Item C:\Scripts\Usuario.txt |
GITHUB: https://gist.github.com/raulunzue/a186acb004e020f9f73aa238d86a8661
Espero os parezca interesante…
¿Te ha gustado la entrada SÍGUENOS EN TWITTER?
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?