Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $lastday = ((Get-Date).AddDays(-10))
- $users = Get-ADUser -filter {(whencreated -ge $lastday)}
- $groups = Get-ADGroup -filter {(whencreated -ge $lastday)}
- Function Get-ADEvent {
- [CmdletBinding()]
- Param(
- # массив с идентификаторами для проверки событий
- [array]$EventID = @(4732),
- # поиск логов от указанной даты
- [datetime]$BeginTime,
- # тип события, которые мы ищем Удача/Провал
- [ValidateSet("Success","Failure")]
- [array]$EventType,
- # IP/DNS имя удаленного компьютера
- [string]$ComputerName
- )
- Process {
- # составляем массив для поиска
- $log_table = @{
- LogName='Security';
- ProviderName='Microsoft-Windows-Security-Auditing';
- ID=$EventID;
- }
- # ниже проверяем какие параметры переданы пользователем
- # и добавляем их в массив
- # пользователь указал дату
- if ($BeginTime){
- $log_table += @{StartTime=$BeginTime}
- }
- # пользователю нужен только успех/провал
- if ($EventType -eq 'Success'){
- $log_table += @{Keywords=9007199254740992}
- }
- elseif ($EventType -eq 'Failure') {
- $log_table += @{Keywords=4503599627370496}
- }
- $parameters = @{
- FilterHashtable=$log_table
- }
- # если пользователь указал удаленный компьютер
- if ($ComputerName){
- $parameters += @{ComputerName=$ComputerName}
- }
- # передаем все параметры в команду
- $events = Get-WinEvent @parameters
- # массив, который вернем пользователю
- # со всеми событиями
- $formatted_events = @()
- foreach ($event in $events){
- # проверяем каждое событие
- # и устанавливаем для него свое описание
- Switch ($event.ID) {
- 4732 {
- $Description = "Добавлен новый пользователь"
- Break
- }
- Default {
- # если его идентификатор не найден
- $Description = $event.Message
- Break
- }
- }
- # определяем тип события
- if ($event.KeywordsDisplayNames -like '*Success*'){$type = 'Успех'}
- else {$type = 'Провал'}
- # преобразовываем сид в буквенное обозначение
- function Sid-Convert {
- [CmdletBinding()]
- param (
- [string]$eventsid
- )
- $sid = $eventsid;
- $objSID = New-Object -TypeName System.Security.Principal.SecurityIdentifier -ArgumentList $sid;
- $sidname = $objSID.Translate([System.Security.Principal.NTAccount]).Value;
- Write-Output $sidname
- }
- # создаем массив текущего события
- # и добавляем его к остальным найденным
- $formatted_events += [PSCustomObject]@{
- "Дата создания" = (Get-Date $event.TimeCreated -Format "dd-MM-yyyy HH:mm");
- "ID" = $event.ID;
- "Описание" = $Description;
- "Тип" = $type;
- "Цель (имя)" = Sid-Convert -eventsid $event.Properties[1].Value;
- "Кем (имя)" = Sid-Convert -eventsid $event.Properties[4].Value;
- "Кем (компьютер)" = Sid-Convert -eventsid $event.Properties[5].Value;
- "Цель (SID)" = $event.Properties[2].Value;
- "Кем (SID)" = $event.Properties[3].Value;
- }
- }
- # возвращаем составленный массив пользователю
- return $formatted_events
- }
- }
- $eventmsg = Get-ADEvent -ComputerName 'имя пк' -BeginTime (Get-Date).AddDays(-10)
- $eventmsg.getType().Fullname
- $evntmsgout = $eventmsg Out-String
- $evntmsgout.getType().Fullname
- #$eventmsg = Get-EventLog security | ?{$_.eventid -eq 4732} | select message
- #$getgrpmod = Get-AdGroup -filter * -Properties Modified | Where {$_.Modified -ge $lastday} | Where {$_.name -match "adm|адм"}
- #Get-ADGroup -Filter {Name -like "adm"} -Properties * #Members | Get-ADGroupMember
- #$admgrp = foreach ($g in $test){Get-ADGroup $g -Properties Members | Where {$_.Modified -lt $lastday}}
- #$getmembgrp = foreach($u in $getgrpmod){Get-ADGroup $u -Properties Members | Get-ADGroupMember | Where {$_.objectClass -match "user"} | select SamAccountName}
- $admusr = foreach($m in $getmembgrp) {Get-ADUser -identity $m.SamAccountName -Properties Modified | Where {$_.Modified -ge $lastday}}
- $arrusers = foreach($user in $users){'<tr><td>' + $user.Name + ' ' + $user.SamAccountName + '</td>' + '<td> ' + $group.DistinguishedName + '</td></tr>'}
- $arrgroups = foreach($group in $groups){'<tr><td>' + $group.SamAccountName + '</td>' + '<td>' + $group.DistinguishedName + '</td></tr>'}
- $body = '<h4>' + 'Созданные пользователи за последние 24 часа ' + $lastdayusers + '</h4><br>' + '<table border="1" width="100%" cellpadding="5">'+
- $arrusers + '</table>' + '<br>' + '<h4>' + 'Созданные группы за последние 24 часа ' + $lastdaygruops + '</h4><br>'+
- '<table border="1" width="100%" cellpadding="5">' + $arrgroups + '</table>'+
- '</table>' + '<br>' + '<h4>' + 'Мониторинг админских групп за 24 часа ' + $lastdayusers + '</h4><br>'+
- '<table border="1" width="100%" cellpadding="5">' + $evntmsgout + '</table>'#| out-string
- Send-MailMessage -From 'почта' -To 'почта' -Subject 'users and groups created in the last 24 hours' -Body $body -BodyAsHtml -SmtpServer 'smtp.домен.ru' -Encoding 'UTF8'
Add Comment
Please, Sign In to add comment