Автозакрытие неактивных клиентских подключений к серверу терминалов Windows

392

March 01, 2018

Понадобилось закрывать отключенные соединения в Windows.

Был написан и использован вот такой скрипт на powershell:


$sessions = qwinsta /server $serverName| ?{ $_ -notmatch '^ SESSIONNAME' } | %{
	$item = "" | Select "Active", "SessionName", "Username", "Id", "State", "Type", "Device", "isActive"
	$item.Active = $_.Substring(0,1) -match '>'
	$item.SessionName = $_.Substring(1,18).Trim()
	$item.Username = $_.Substring(19,20).Trim()
	$item.Id = $_.Substring(39,9).Trim()
	$item.State = "<" + $_.Substring(48,8).Trim() + ">"
	$item.Type = $_.Substring(56,12).Trim()
	$item.Device = $_.Substring(68).Trim()
	$item.isActive = $_.Substring(48,8).Trim() -match "Активно"
	$item
}

foreach ($session in $sessions) {
	if (($session.Id -ne "65536") -and ($session.Id -ne "ID") -and ($session.Id -ne "0") -and ($session.Id -ne "1") -and ($session.Username -ne "vboyko")) {
		try {
			if (-not $session.isActive -and -not $session.Active) {
				"Logoff session " + $session.id + ", user " + $session.Username
				logoff $session.id
			}
		} catch {
			"ERROR: Could not logoff session " + $session.id + ", user " + $session.Username
		}
	}
}

Скрипт запускается один раз в сутки, в ночное время, закрывает все клиентские соединения, кроме "Избранных".

Исключения добавляются следующими условиями в скрипт. "vboyko" - это мой логин в windows на этом сервере.

-and ($session.Username -ne "vboyko")
on March 01, 2018