RDS. Управление терминальными сеансами

В Powershell есть модуль RemoteDesktop, предназначенный для управления терминальными сеансами

ipmo RemoteDesktop
Get-RDUserSession | ft UserName,CreateTime,DisconnectTime,SessionState,SessionId,HostServer -AutoSize

Но Get-RDUserSession доступен начиная только с 2012 сервера, требует запуска сеанса с повышенными привилегиями и отображает время простоя в миллисекундах, что неудобно для восприятия. Поэтому можно воспользоваться и другим, более громоздким но безотказным вариантом, с использованием команды quser

[Console]::outputEncoding = [System.Text.Encoding]::GetEncoding('cp866') 
function Get-TSSessions {
    param( $ComputerName = "localhost" ) quser /server:$ComputerName | 
    # Преобразуем к формату csv документа, с разделением полей запятыми
    ForEach-Object { ( $_.Trim() -replace '\s{18,}(?=\d+)', ',,' ) -replace "\s+", "," -replace ("IDLE,", "IDLE ") } |` ConvertFrom-Csv # Конвертируем в объекты 
} Get-TSSessions -ComputerName "TERMserv" | ft -AutoSize
ConvertFrom-String

Аналогичный эффект должен был дать и ConvertFrom-String.
Но я не смог его заставить нормально обрабатывать столбцы с отсутствующими значениями, в результате чего структура таблицы «съезжала».
Так что при возможности разберем ConvertFrom-String в отдельной заметке.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Срок проверки reCAPTCHA истек. Перезагрузите страницу.