Алгоритм сценария
- n
- Выполняется поиск объектов «компьютер» из контейнера в Active Directory
- Проверяет сетевую доступность
- Выполняет поиск событий входа в систему, если сервер доступен
- Создает файл с текущей датой, добавляет информацию (Имя пользователя, Дата, Имя сервера, IP адрес клиента)
n
Настройка сценария
Сценарий не исполнен как функция и его корректирование выполняется непосредственно в нем же.nnНеобходимо заполнить переменную OU – это подразделение в Active Directory вмещающее сервера, Path – путь где будет располагаться отчетnnТребуется наличие установленного модуля Active Directory (если использовать поиск серверов из AD)nnWindows 10nnblogs.technet.microsoft.com/ashleymcglone/2016/02/26/install-the-active-directory-powershell-module-on-windows-10/nnWindows 7/2008nnblogs.msdn.microsoft.com/rkramesh/2012/01/17/how-to-add-active-directory-module-in-powershell-in-windows-7/nn n
Сценарий
n
# Параметры сценарияn$OU = "" #Необходимо указать контейнер Active Directory, в котором расположены терминальные сервера. Пример "OU=Servers,DC=root,DC=local"n$Path = "" # Путь к сетевому ресурсу, в котором размещены отчеты. Пример "\\server\share\" или "c:\reports\"nn$filter = @{nLogName='Microsoft-Windows-TerminalServices-LocalSessionManager/Operational'nID = 22nStartTime = [datetime]::Today.AddDays(-1) # указывается период 1 - один день от текущей датыnEndTime = [datetime]::Todayn}nn$Machines = (Get-ADComputer -Filter * -SearchBase $OU).Namen$Date = Get-Date -Format dn$Date = $Date -replace "/", "-"nnforeach ($Machine in $Machines) {nif(Test-Connection -ComputerName $Machine -BufferSize 16 -quiet -count 2) {n $result = @()n $LogOnEvents = Get-WinEvent -filterHashtable $filter -ComputerName $Machine -ErrorAction SilentlyContinuen Foreach($Event in $LogOnEvents )n {n $UserName = $Event.Properties[0].value n $Ip = $Event.Properties[2].valuen $logObj = New-Object PSobject -Property @{ComputerName = $Machine;Time = $Event.TimeCreated; UserName = $UserName ;ClientIPAddress = $Ip } n $result = $result + $logObjn } n $result | Export-Csv -Encoding Unicode $Path\$Date.csv -Append -NoTypeInformation}nElse {Write-Host ("Host not response " + $Machine) -ForegroundColor White -BackgroundColor Red }n} nn
Создание расписания выполнения
- n
- Создать два файла, в примере каталог c:\scripts. – файл AuditSessions.ps1
- Скопируйте сценарий в файл
nСоздание расписания поиска файловnnВ управлении компьютером, перейдите в раздел «Планировщик заданий». Создайте задание, введите желаемое имя заданияnnУкажите периодичность «Ежедневное»nnnnУстановите период «каждый день»nnnnОставьте опцию «Запустить программу»nnnnnnПуть к программе — C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exennАргумент запуска — C:\Scripts\AuditSessions.ps1nnnnПосле создания, откройте свойство задания, перейдите на вкладку «Триггеры»nnnnУстановите опцию «Повторить задачу каждые», указав нужную периодичность повторенияnnnnУстановите опции «Выполнять для всех пользователей» и «Выполнять с наивысшим приоритетом». Укажите пользователя, имеющего право на чтение всех файлов на удаленных компьютерах. Как правило это пользователи, входящие в группу администраторов на удаленных компьютерах.nnn
Информация о результатах и рабочих файлах
Файл отчета хранится в CSV файле, CSV файл по пути указанному в сценарии. CSV файл, можно преобразовать таблицу, содержимое CSV файла имеет разделение в виде запятой или другого символа.nn n
Аудить Windows систем, написание сценариев и скриптов, обращайтесь [email protected]