Мне нужно создать приложение в Powershell, которое будет перечислять «Отключенные» удаленные сеансы, оно должно вывести имя пользователя и идентификатор сеанса, которые позже будут использоваться с rwinsta для удаления сеанса
Я нашел скрипт в stackoverflow, который почти подтверждает концепцию, выполняя поиск сессий и предоставляя сокращенный список, который показывает только имя пользователя и идентификатор сессии, но я изо всех сил пытаюсь решить проблемы с форматированием. Функция Foreach and replace обрезает пробелы и заставляет строки переключать столбцы.
function Get-TSSessions
{
param ($ComputerName = "SERVER")
qwinsta /server:$ComputerName | ForEach-Object {$_.Trim() -replace "\s+","," } | ConvertFrom-Csv
}
Get-TSSessions -ComputerName "SERVER2016" | ft -Property USERNAME, ID -AutoSize
Затем я получаю следующее:
USERNAME ID
-------- --
0 Disc
1 Conn
Administrator 5
6 Disc
65536 Listen
Если я удаляю ForEach-Object {$ _. Trim () -replace "\ s +", ","} из команды Qwinsta, а затем удаляю Format-Table -Property USERNAME, ID -Autosize из Get- TSSessions - получаю следующую таблицу:
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
console 1 Conn
31c5ce94259d4... Administrator 5 Active
admin2 6 Disc
31c5ce94259d4... 65536 Listen
rdp-tcp 65537 Listen
Как видите, результаты в первой таблице перемещаются в пустое пространство слева, когда в этом столбце нет записи, поэтому в двух отключенных сеансах не отображаются правильные имя пользователя и идентификатор.
Мне просто нужны столбцы имени пользователя и идентификатора из второй таблицы.