Выход из RDP-сессии на нескольких компьютерах

Зачастую решая какую-то задачу совершенно забываешься и не обращаешь внимание на время, а взглянув на часы впопыхах начинаешь собираться домой. При этом очень легко забыть выйти со всех серваков, а это не очень хорошо в плане безопасности, как это доказал один хакатон у друга в одной крупной антивирусной компании.

На помощью опять приходит Powershell, всего несколько магических строчек которого избавят нас от одной из головных болей:


$servers = Get-Content "C:\Scripts\servers.txt"
$username = $env:USERNAME

function GetOut {
    ForEach ($server in $servers)
        {
         $session = ((quser /server:$server | ? { $_ -match $username }) -split ' +')[2]
         logoff $session /server:$server
        }
}

GetOut

В текстовом файле записаны серваки столбиком 🙂
Но можно сделать переменную с серваками умной, которая будет получать имена из контейнеров AD, тогда необходимо сделать следующее присвоение:


$servers = Get-ADComputer -Filter * -SearchBase "OU=YOUROU, DC=CONTOSO, DC=COM" | % { $_.Name }