#Получаем список подключенных RDP пользователей на сервере
param (
[string] $server = $env:COMPUTERNAME)
$server = "term22"
#Получаем список сессий
$session = Invoke-Command -ComputerName $server -ScriptBlock {cmd /c "qwinsta /server:$env:COMPUTERNAME"}
# Выбираем строки только с пользователтскими УЗ
# Статус DISK - это отключенные, но не разлогиненные пользователи
# Статус Active - Это активная в данный момент УЗ
#Пример:
# User1 16 Disk
# User2 19 Disk
$users=$session | where { ($_ -like "*Disc*" -or $_ -like "*Диск*" -or $_ -like "*ЁбЄ*" -or $_ -like "*Active*" ) -and $_ -notlike "*services*"}
$colResult = @()
#Проходимся по строкам
foreach ($sTemp1 in $users.Trim())
{
#заменяем пробелы где больше двух на один и разбиваем строку по пробелам: пример
# User1
# 16
#Disk
$spl = ($sTemp1 -replace "\s{2,}"," ").Split(" ")
$array=@()
#Снова проходимся по строкам и заполняем массив
foreach ($sTemp2 in $spl)
{
if (-not ($sTemp2 -like "*#*"))
{
$array += $sTemp2
}
}
$rowtmp = "" | Select-Object login,id,Status
$rowtmp.login = $array[0]
$rowtmp.id = $array[1]
$rowtmp.Status = $array[2]
$colResult += $rowtmp
}
$colResult | ft
#Invoke-Command -ComputerName "TERM11" -ScriptBlock {cmd /c "QUERY USER"}