Определение числа активных пользователей 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 #Пишим в файл сообщение методом добавления, не перезаписи
На данный момент осталась основная задача написать скрипт который будет разбирать файл построчно и выдавать какое максимальное количество активных пользователей работает на сервере.
Может кому пригодится.
Сразу поясню откуда взялась строчка #$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 #Пишим в файл сообщение методом добавления, не перезаписи
На данный момент осталась основная задача написать скрипт который будет разбирать файл построчно и выдавать какое максимальное количество активных пользователей работает на сервере.
Комментарии
Отправить комментарий