Войти

Показать полную графическую версию : [решено] Просмотр активных сессий на RDP и сортировка вывода


saykat85
26-07-2017, 16:22
Добрый день, форумчане. Есть необходимость получить красивый список активных сессий RDP с указанием имени сервера.

#тут получаю список серверов из нужной OY
$servers=Get-ADComputer -filter * -SearchBase "OU...DC=..,DC=.." | select -exp name
#тут сама операция опроса
$results = foreach ($server in $servers) {qwinsta /server:$server}

на выходе получаю список сессий с логинами, id, состоянием и именем сессии. А имени сервера на котором эти сессии висят нет.
Пробовал прикрутить конструкцию вроде
foreach ($server in $servers) {qwinsta /server:$server | Format-Table -Property $server.name, username} , но результат такой же, как без FT.
Может у кого то есть идеи как это оформить?

Iska
26-07-2017, 16:35
Сценарий PowerShell script to Find RDP sessions on Servers (https://gallery.technet.microsoft.com/scriptcenter/PowerShell-script-to-Find-d2ba4252)

Kazun
26-07-2017, 16:39
qwinsta /server:$server | foreach {$_.trim() -replace "\s+",","} | ConvertFrom-Csv | Select *,@{n="Server";e={$server}}

Или можно установить модуль PSTerminalServices - https://psterminalservices.codeplex.com/

PS > Get-TSSession

Server SessionID State IPAddress ClientName WindowStationName UserName
------ --------- ----- --------- ---------- ----------------- --------
localhost 0 Disconnected Services
localhost 1 Active Console Contoso\User
localhost 65536 Listening RDP-Tcp

saykat85
27-07-2017, 09:40
Iska, Kazun, Вам спасибо. На основании предложенных скриптов собрал то, что нужно.

saykat85
27-07-2017, 10:07
Хотелось бы понять что происходит с данными вот тут

foreach { (($_.trim() -replace "\s+",","))} | ConvertFrom-Csv)

вот в это строчке,

$queryResults = (qwinsta /server:$ServerName | foreach { (($_.trim() -replace "\s+",","))} | ConvertFrom-Csv)

и от чего все ломается если это foreach { (($_.trim() -replace "\s+",","))} | ConvertFrom-Csv) убрать.

Ageron
10-06-2019, 14:13
и от чего все ломается если это foreach { (($_.trim() -replace "\s+",","))} | ConvertFrom-Csv) убрать. »

нда, запоздалый ответ но отвечу
foreach, здесь лишний,
командой qwinsta /server, можно обработать только один узел, а не массив

логичнее использовать
(query session /server:$ServerName).trim() -replace "\s+","," | ConvertFrom-Csv

trim() - отбрасывает пустые символы в начале строки и в конце
"\s+","," - замена TAB на ,

YuS_2
10-06-2019, 16:16
"\s+","," - замена TAB на , »
если уж описывать код, то надо бы уточнять полностью: не только TAB, а и любой пробельный символ, один или более...
\s == [ \f\n\r\t\v]




© OSzone.net 2001-2012