Logoff normal de todos os usuários do servidor de terminal do Windows

Eu precisava de uma solução alternativa para fazer logoff de usuários que deixam suas janelas do LibreOffice abertas quando saem. Eles sempre encontrariam uma caixa de diálogo de recuperação pela manhã, causando frustração entre os usuários menos qualificados. Então, escrevi este script e adicionei uma programação para executá-lo.

$timeout = 600
$message
= "Save all files! Logging you out in "+ $timeout/60 +" minutes."
$sessions
= @()
$cond
= "wdica"

# Collect session IDs and warn users
query session
| select-string $cond |
%{$_ -replace " {2,27}"," "} |
foreach { $_.ToString().split(" ")[3]} |
foreach { $sessions += $_
msg $_
/TIME:$timeout $message
}

# Wait for timeout
sleep $timeout


# Log off sessions
$sessions
| foreach {
C
:toolspstoolsPsExec.exe -i $_ C:toolsNircmdnircmd.exe win close alltopnodesktop
}

As variáveis ​​no topo podem ser usadas para modificar a experiência. O “$ cond” pode ser um nome de usuário, por exemplo.

Transferências

Baixe as seguintes ferramentas e descompacte-as no local apropriado (usado no script acima):