Определение числа активных пользователей PowerShell

Появилась необходимость проводить мониторинг активных пользователей в течении дня. Родился скрипт на PowerShell для ведения статистики количества активных пользователей работающих в терминале на сервере.

Может кому пригодится.
Сразу поясню откуда взялась строчка #$prov = $i.Contains("ЂЄвЁў­®") скрипт писался в PowerShell ISE и там обнаружилась проблема с кодировками. Если скрипт запускать из оболочки PowerShell ISE необходимо вместо строки "Активно" искать краказябры, если запускаете из консольного приложения powershell, то необходимо искать строку "Активно". Соответственно с другими параметрами точно так же.

Так как скрипт используется в с вязке с Планировщиком заданий и запускается командой
powershell.exe -file "d:\scripts\activeuser.ps1" , то ищем строку "Активно"

$termusers = query user

$filelog = "d:\temp\activeuser.log" #Определяем файл в который будем записывать данные

$k = 0 #переменная для перечисления активных пользователей

foreach ($i in $termusers)#цикл перебора строк списка пользователей
    {
    #$prov = $i.Contains("ЂЄвЁў­®") #Проверяем есть ли в строка подстрока "Активно"(ЂЄвЁў­®)
    $prov = $i.Contains("Активно") #Проверяем есть ли в строка подстрока "Активно"(ЂЄвЁў­®)
    if ($prov -eq "True")# если подстрока в строке есть, то выполняем след действие
        {
            $k++ #количество активных пользователей увеличиваем на 1
            $i #строка с именем сессии активного пользователя
        }
    }
$curenttime = (Get-Date -Format "HH:mm:ss dd-MM-yyyy").ToString() #Определяем текущую дату и время
$msg = "Активных пользователей: " + $k + " " + $curenttime #Собираем сообщение из текста и пременных
Out-File -FilePath $filelog -InputObject $msg -Append #Пишим в файл сообщение методом добавления, не перезаписи




На данный момент осталась основная задача написать скрипт который будет разбирать файл построчно и выдавать какое максимальное количество активных пользователей работает на сервере.

Комментарии

Популярные сообщения из этого блога

PowerShell. Коммандлет для паузы в выполнении скрипта Wait-Event

Первоначальная настройка МФУ Kyocera FS-1035MFP для печати по сети