Скриншоты терминалов по расписанию

Хотите поделиться интересным решением, идеей, просто помочь другим не наступать на известные грабли? Или почитать заметки бывалых о работе с терминальными серверами Windows?
Ответить
amxs3
Сообщения: 34
Зарегистрирован: Пн окт 31, 2016 11:19 am

Скриншоты терминалов по расписанию

Сообщение amxs3 » Вт дек 20, 2016 3:16 pm

Возникла необходимость палить работу/досуг пользователей. Вместо готовых монстрообразных программ нашёл следующий способ:

Скачиваем исходники и распаковываем их на диск D:
https://github.com/trmsjj/vnc_screenshot

Т.к. для удобства нужно знать имена пользователей, а не только адреса, я немного изменил код Program.cs
Program.rar
(1.44 КБ) 52 скачивания
Для просмотра рекомендую Notepad++.

Если не берёте готовую программу моей сборки
vncss.rar
(54.96 КБ) 54 скачивания
В командной строке выполняем:

Код: Выделить всё

C:\Windows\System32>"C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe" "D:\vnc_screenshot-master\vnc_screenshot\vnc_screenshot.csproj"
Видим "Build succeeded."

Проверяем работу

Код: Выделить всё

C:\Windows\System32>"D:\vnc_screenshot-master\vnc_screenshot\bin\Debug\vnc_screenshot.exe" i:192.168.10.10 p:password o:"D:"
Пакетный режим

Код: Выделить всё

C:\Windows\System32>"D:\vnc_screenshot-master\vnc_screenshot\bin\Debug\vnc_screenshot.exe" f:"D:\vnc_screenshot-master\vnc_screenshot\bin\Debug\iplist.txt" p:password o:"D:"
Если всё прошло хорошо, на диске "D:", который мы указали в параметре "о", увидим скриншот(ы).

Теперь можно сделать два скрипта
В первом делаем скриншоты:

Код: Выделить всё

# Получаем пользователей, которые сегодня логинились на терминальный сервер
# и создаем из них файл для программы vncss формата "ip:name"
#  Если >=WS2012 можно проверять доступность хоста "Test-NetConnection -ComputerName $event.Properties[2].Value -Count 1 -Port 5900"
$iplist = "D:\vncss\iplist.txt"
Out-File $iplist
$CurrentDate = Get-Date -Hour 0 -Minute 0 -Second 0
$allRDPevents = Get-WinEvent -ComputerName 192.168.1.4 -LogName "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational" | ?{$_.id -eq 1149 } | ?{$_.TimeCreated -ge $CurrentDate }
$results = @{}
foreach ($event in $allRDPevents){
    if (($event.Properties[0].Value) -and !($results.($event.Properties[0].Value))) {
        $results += @{
            $event.Properties[0].Value = $event.Properties[2].Value
        }
    }
}
$results.Keys | foreach {
  $($results.Item($_))+":"+$_ | Out-File $iplist -Append
}
# делаем новые скиншоты
D:\vncss\vncss.exe f:"D:\vncss\iplist.txt" p:password:"D:\vncss\ss"
Во втором ограничиваем их количество

Код: Выделить всё

# в 00 часов каждый день

$pathss = "D:\vncss\ss\*.png"
$rar = "C:\Program Files\WinRAR\Rar.exe"
$Days = -30 # храним только последние 30 дней
$CurrentDate = Get-Date
$OldDate = $CurrentDate.AddDays($Days)

# Архивируем папку ss и очищаем её
$currentArhPath = $pathss + "\vncss-" + (get-date -Format yyyyMMdd) + ".rar"
&$rar a -m5 -s -ep1 -df $currentArhPath $pathss
# удаляем архивы старше $Day дней
Get-ChildItem $pathss | Where-Object { ( $_.LastWriteTime -lt $OldDate ) -and ($_.Extension -eq ".rar")} | Remove-Item
Дальше можно настроить расписание.
Последний раз редактировалось amxs3 Чт дек 22, 2016 12:21 pm, всего редактировалось 4 раза.

aka
Разработчик
Разработчик
Сообщения: 9035
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Скриншоты терминалов по расписанию

Сообщение aka » Вт дек 20, 2016 4:46 pm

Круто.

Добавлю: если у пользователя два монитора, второй можно увидеть подключившись с тем же паролем по VNC к порту 5901.

zhendosina
Сообщения: 314
Зарегистрирован: Пн янв 19, 2015 3:18 pm

Re: Скриншоты терминалов по расписанию

Сообщение zhendosina » Вт дек 20, 2016 10:08 pm

aka писал(а):Круто.

Добавлю: если у пользователя два монитора, второй можно увидеть подключившись с тем же паролем по VNC к порту 5901.
Как насчет зашить это в втварь? Пусть конфигуратор снимает скриншотики я считаю :)

aka
Разработчик
Разработчик
Сообщения: 9035
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Скриншоты терминалов по расписанию

Сообщение aka » Вт дек 20, 2016 10:19 pm

Ага. Скриншотики, потом клавиатуру с мышью, закончится VNC клиентом в конфигураторе...

amxs3
Сообщения: 34
Зарегистрирован: Пн окт 31, 2016 11:19 am

Re: Скриншоты терминалов по расписанию

Сообщение amxs3 » Пн мар 27, 2017 3:51 pm

aka писал(а):Ага. Скриншотики, потом клавиатуру с мышью, закончится VNC клиентом в конфигураторе...
А, кстати, есть идея: конфигуратор пусть остаётся для одминов, а для безопасников и прочих бездельников сделать виндовую прогу, которая всё это будет иметь. И продавать за отдельные деньги. Ну и мне за идею лицензию нахаляву ))

Дмитрий 123
Сообщения: 45
Зарегистрирован: Пт мар 31, 2017 3:46 am

Re: Скриншоты терминалов по расписанию

Сообщение Дмитрий 123 » Пт апр 07, 2017 7:52 pm

amxs3 писал(а):
aka писал(а):Ага. Скриншотики, потом клавиатуру с мышью, закончится VNC клиентом в конфигураторе...
А, кстати, есть идея: конфигуратор пусть остаётся для одминов, а для безопасников и прочих бездельников сделать виндовую прогу, которая всё это будет иметь. И продавать за отдельные деньги. Ну и мне за идею лицензию нахаляву ))

+5

Ответить