79 lines
3.3 KiB
PowerShell
79 lines
3.3 KiB
PowerShell
|
|
function Get-Query {
|
|||
|
|
Param (
|
|||
|
|
$srv="localhost",
|
|||
|
|
$user="*"
|
|||
|
|
)
|
|||
|
|
# Создаем коллекцию - будущий объект
|
|||
|
|
$Users = New-Object System.Collections.Generic.List[System.Object]
|
|||
|
|
# Используем команду query с параметром user и именем удаленного сервера (забираем вывод в переменную)
|
|||
|
|
$query = query user /server:$srv
|
|||
|
|
# Проверяем, что перемення не пустая
|
|||
|
|
if ($null -ne $query) {
|
|||
|
|
# Перечитываем все строки
|
|||
|
|
$usr = $query[1..100]
|
|||
|
|
# Удаляем лишние пробелы
|
|||
|
|
$usr = $usr -replace "(^\s)|(^\>)"
|
|||
|
|
$usr = $usr -replace "\s{2,100}"," "
|
|||
|
|
# Формируем массив из полученого вывода, где каждая новая строка будет выступать элементом цикла
|
|||
|
|
$split1 = $usr -split "\n"
|
|||
|
|
# Отправляем массив в цикл
|
|||
|
|
foreach ($s in $split1) {
|
|||
|
|
# Формируем массив из слов разделенных пробелами
|
|||
|
|
$split2 = $s -split "\s"
|
|||
|
|
# Проверяем количество элементов в массиве строки
|
|||
|
|
if ($split2.Count -eq 6) {
|
|||
|
|
# Если длина 2-го элемента в массиве равна 4, значит сессия отключена
|
|||
|
|
if ($split2[2].Length -eq 4) {
|
|||
|
|
$status = "Disconnect"
|
|||
|
|
}
|
|||
|
|
# Если 6 или 7 - активна (зависит от локализации)
|
|||
|
|
elseif (($split2[2].Length -eq 6) -or ($split2[2].Length -eq 7)) {
|
|||
|
|
$status = "Active"
|
|||
|
|
}
|
|||
|
|
# Заполняем коллекцию значениями из массива строки
|
|||
|
|
$Users.Add([PSCustomObject]@{
|
|||
|
|
User = $split2[0]
|
|||
|
|
Session = $null
|
|||
|
|
ID = $split2[1]
|
|||
|
|
Status = $status
|
|||
|
|
IdleTime = $split2[3]
|
|||
|
|
LogonTime = $split2[4]+" "+$split2[5]
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
if ($split2.Count -eq 7) {
|
|||
|
|
if ($split2[3].Length -eq 4) {
|
|||
|
|
$status = "Disconnect"
|
|||
|
|
}
|
|||
|
|
elseif (($split2[3].Length -eq 6) -or ($split2[3].Length -eq 7)) {
|
|||
|
|
$status = "Active"
|
|||
|
|
}
|
|||
|
|
$Users.Add([PSCustomObject]@{
|
|||
|
|
User = $split2[0]
|
|||
|
|
Session = $split2[1]
|
|||
|
|
ID = $split2[2]
|
|||
|
|
Status = $status
|
|||
|
|
IdleTime = $split2[4]
|
|||
|
|
LogonTime = $split2[5]+" "+$split2[6]
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
$Users
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# Get-Query 192.168.3.100
|
|||
|
|
# User : lifailon
|
|||
|
|
# Session : rdp-tcp#34
|
|||
|
|
# ID : 1
|
|||
|
|
# Status : Active
|
|||
|
|
# IdleTime : 2:24
|
|||
|
|
# LogonTime : 16.12.2023 11:11
|
|||
|
|
#
|
|||
|
|
#
|
|||
|
|
# Get-Query 192.168.3.100
|
|||
|
|
# User : lifailon
|
|||
|
|
# Session :
|
|||
|
|
# ID : 1
|
|||
|
|
# Status : Disconnect
|
|||
|
|
# IdleTime : .
|
|||
|
|
# LogonTime : 16.12.2023 11:11
|