Аудит изменений групповых политик через PowerShell
Дата: 07.08.2015 Автор Admin
Если в вашей компании больше чем один системный администратор, то рано или поздно вы столкнетесь с проблемой аудита GPO.
В данной статье мы разберем как получить уведомление на почту об измененных групповых политиках.
В решении данной проблемы мы будем использовать скрипт, который будет искать изменения в GPO за указанное кол-во дней, создавать отчет GPO и отправлять письмо системному администратору.
Теперь сам скрипт:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
#Указываем почтовый сервер $mailserver="mailserver" #Путь где будут храниться отчеты по GPO $reportPatch="\yourdir1" # кол-во дней за которые идет поиск $days='10' # Почтовый домен $mail_domain="domain.com" # получатели $sendto="admin@domain.com" # тема письма $theme="Аудит изменений в GPO" # временный текстовый файл в котором формируется тело письма $tmp="\yourdirtmp\body.txt" # Путь где хранятся временный zip архив с отчетами $zippatch='\yourdirtmp3' # полный путь к zip архиву для отправки по почте $Attachment="$zippatch\GPOreport.zip" # Удаляем старое вложение Remove-Item $Attachment # Импортируем модуль GroupPolicy Import-Module GroupPolicy # Добавляем заголовок в тему письма echo "Изменены следующие групповые политики:" > $tmp # Загружаем список измененных GPO $changed_GPO = (Get-GPO -all | ? {$_.ModificationTime -gt (get-date).adddays(—$days)}).DisplayName foreach ($gpos in $changed_GPO) { # Создаем отчеты GPO Get-GPOReport -Name "$gpos" -ReportType HTML -Path $reportPatch\$gpos.html } # Добавляем в тело письма список измененных GPO $gpo_modif=Get-GPO -all | ? {$_.ModificationTime -gt (get-date).adddays(—$days)} | select DisplayName, ModificationTime | ft -AutoSize >> $tmp # Преобразуем тело письма $body=Get-Content $tmp | Out-String # Архивируем полученные отчеты в zip function ZipFiles( $zipfilename, $sourcedir ) { Add-Type -Assembly System.IO.Compression.FileSystem $compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal [System.IO.Compression.ZipFile]::CreateFromDirectory($sourcedir, $zipfilename, $compressionLevel, $false) } ZipFiles $zippatch\GPOreport.zip $reportPatch\ # Отправляем письмо администратору Send-MailMessage -From GPO-notification@$mail_domain -To $sendto -Encoding ([System.Text.Encoding]::UTF8) -Subject $theme -Body $body -SmtpServer $mailserver -Attachment "$Attachment" |
Измените переменные и скрипт будет работать.
Удачного аудита GPO =)
Добавить комментарий