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 не будет опубликован.