Con la ayuda del modulo PSTerminalservices podemos consultar las sesiones de terminal services abiertas en un servidor y cerrarlas.
Con el siguiente script he recorrido todos los servidores del dominio para buscar en que maquinas habia dejado mi usuario logueado. Guardo el resultado en un fichero log...
Con el siguiente script he recorrido todos los servidores del dominio para buscar en que maquinas habia dejado mi usuario logueado. Guardo el resultado en un fichero log...
#chequeo de sesiones de terminal abiertas en servidores import-module .\PSTerminalServices $ErrorActionPreference="SilentlyContinue" $usuario=read-host "Liberar sesiones de Terminal de usuario..." $rootdse=[ADSI]"" $dnc=$rootDSE.distinguishedname $domnetbios=$rootdse.name $Dom='LDAP://' + $dnc $objDomain = New-Object System.DirectoryServices.DirectoryEntry $Dom $objSearcher = New-Object System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = $objDomain $objSearcher.PageSize = 7000 $objSearcher.filter = "(&(objectCategory=Computer)(operatingsystem=*Server*))" $machines=$objSearcher.FindAll() out-file ".\TS_Session_Cleaner_Masivo.log" -input "server sessionid useraccount connectionstate connectTime DisconnectTime" Foreach($machine in $machines) { $machine=$machine.properties.name $valor= Test-Connection -ComputerName $strComputer -Count 1 -BufferSize 16 if ($? -eq $true) { write-host "$machine" -fore green #consultamos sus sesiones de terminal abiertas $result=get-tssession -computername $machine -filter {$_.useraccount -eq "$domnetbios\$usuario"} if ($result -ne $null) { $result|ft sessionid,useraccount,connectionstate,connectTime,DisconnectTime out-file ".\TS_Session_Cleaner_Masivo.log" -input "$machine $($result.sessionid) $($result.useraccount) $($result.connectionstate) $($result.connectTime) $($result.DisconnectTime)" -append } #stop-tssession -computername $machine -id $session -force }#fin de ping else{write-host "$machine" -fore red} } #fin foreachPara comprobar en que servidores tengo abierta una sesion de terminal server.
server sessionid useraccount connectionstate connectTime DisconnectTime SERVERPXY01 1 DOMAIN\MV_admin Disconnected 05/22/2014 15:09:21 05/22/2014 18:27:14 SERVERAPI01 2 DOMAIN\MV_admin Disconnected 04/11/2014 12:12:28 04/11/2014 15:09:02 SERVERVDI08 2 DOMAIN\MV_admin Disconnected 05/14/2014 19:40:13 05/15/2014 19:40:52 SERVERWSUS01 2 DOMAIN\MV_admin Disconnected 05/06/2014 11:26:05 05/06/2014 18:19:33 SERVERAV52 2 DOMAIN\MV_admin Disconnected 04/23/2014 17:47:07 04/23/2014 17:58:10Tras revisar el listado puedo cerrar las sesiones masivamente:
import-module .\PSTerminalServices $ErrorActionPreference="SilentlyContinue" $content=get-content("TS_Session_Cleaner_Masivo.log") $content|%{ $campo=$_.split(" ") $machine=$campo[0] $session=$campo[1] $useraccount=$campo[2] $valor= Test-Connection -ComputerName $strComputer -Count 1 -BufferSize 16 if ($? -eq $true) { write-host "Cerrando sesion de $useraccount en $machine" stop-tssession -computername $machine -id $session -force } }#fin content
Comentarios
Publicar un comentario