Powershell : fermeture de session inactives à distance

Suite à un besoin récurrent, j’ai développé un script Powershell permettant de mettre fin à tous les sessions déclarées comme inactives sur un serveur Windows distant. Il est constitué d’une fonction qui est chargée de terminer les sessions et de quelques instructions appelant cette fonction ; une fois un serveur traité, le script demande si l’utilisateur souhaite traiter un autre serveur.

A noter qu’il faut naturellement des droits d’administration sur les serveurs sur lesquels une session doit être terminée.

$kick = "Y"
function Kick {
param ($srv)
$quout = quser /server:$srv
$status = "Disc"
$indexs = 2
$indexu = 1
$sid = (($quout | Where-Object { $_ -match $status }) -split ' +')[2]
while ($sid -ne $null)
{
$username = (($quout | Where-Object { $_ -match $status }) -split ' +')[$indexu]
$sid = (($quout | Where-Object { $_ -match $status }) -split ' +')[$indexs]
if ($sid -eq $null) { break }
Write-Host "User :"$username
Invoke-RDUserLogoff -HostServer $srv -Unifiedsid $sid -Force
$indexu = $indexu+8
$indexs = $indexs+8
Write-Host "Session has been terminated."
Start-Sleep -Seconds 3
}
}
Write-Host "Force close disconnected session script for Windows 2008 and 2012"
while ($kick -eq "Y")
{
$srv = Read-Host "Server Name"
kick($srv)
$kick = Read-Host "Do you want to process another server ? Y/N"
}
Lien pour marque-pages : Permaliens.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.