Скрипт получения новых компьютеров в Active Directory

Обновлено 22.10.2023

computers logoДобрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В прошлый раз мы с вами разобрали методы управления переменными средами Windows. В сегодняшней статье я хочу с вами поделиться полезным скриптом, который поможет вам в информировании на почту информации, о тех компьютерах которые были созданы за последнюю неделю или другой нужный вам период в Active Directory.

Постановка задачи

  1. Проверять базу данных Active Directory на предмет появившихся новых компьютеров, пусть это будет неделя
  2. Полученные данные формировать в виде таблицы
  3. Отправлять данные нужным получателям
  4. Вести лого выполнения скрипта
  5. Создать задачу в планировщике Windows и настроить расписание

PowerShell: Получения новых компьютеров в Active Directory

Вот полный текст скрипта.

function Date {Get-Date -Format "MM.dd.yyyy HH:mm:ss"}

# Указание папки с логами, если ее нет, то создаем
$log_folder = "$PSScriptRoot\Logs\" + $($MyInvocation.MyCommand.Name -replace (".ps1", ""))
$log = "$log_folder\$(Get-Date -Format "yyyy_MM_dd_HH_mm_ss").txt"

if (! (Test-Path $log_folder -PathType Container -ErrorAction SilentlyContinue))
{
New-Item $log_folder -ItemType D -Force | Out-Null
}

"$(Date) Start Processing" | Tee-Object $log -Append

$new_comps = Get-ADComputer -Filter * -Properties Name, DistinguishedName, Created | ? {$_.Created -ge (Get-Date).AddDays(-7) -and $_.Created -le (Get-Date)} # Сам запрос в Active Directory

# Формирование вида таблицы в письме
$header = @"
<style>
TABLE {border-width: 1px; border-style: solid; border-color: black; border-collapse: collapse;}
TD {border-width: 1px; padding: 3px; border-style: solid; border-color: black;}
TH {border-width: 1px; padding: 3px; border-style: solid; border-color: black;}
</style>
"@

$body = $null
$body = $new_comps | select Name, DistinguishedName, Created | ConvertTo-Html -Head $header # Конвертирование письма в html формат
$body += "<p>Generated on $($env:COMPUTERNAME + "." + $((Get-WmiObject Win32_ComputerSystem).Domain))" # В письме будет ссылка откуда был сгенерирован скрипт

# задается список получателей и SMTP сервер
$from = "notify@techmail.pyatilistnik.org"
$to1 = "barboskin.g@pyatilistnik.org" # Первый получатель
$to2 = "sem@pyatilistnik.org" # "Второй получатель
$Subject = "New computers in pyatilistnik.org AD domain created this week"  # Тема письма
$smtpserver = "techmail.pyatilistnik.org"
$secure = $true
$port = 587 # TLS, for SSL use 465
$username = "notify"
$password = '11111111111'

# Отправка письма получателям
$message = New-Object System.Net.Mail.MailMessage
$message.From = $from
$message.To.Add($to1)
$message.To.Add($to2)

$message.Subject = $Subject
$message.Body = $body
$message.IsBodyHtml = $true

$smtp = New-Object Net.Mail.SmtpClient($smtpserver)

try {
$smtp.Send($message)
}
catch {
"$(Date) $($_.exception.message)" | Tee-Object $log -Append
}

"$(Date) End Processing" | Tee-Object $log -Append

Далее вы сохраняете данный скрипт в формат ps1 и запускаете его в планировщике. В результате выполнения вы получите письмо

Письмо со списком новых компьютеров в Active Directory

В папке с логами вы найдете события по данному заданию.

Логи выполнения скрипта PowerShell

Теперь вы всегда сможете получать актуальную информацию по новым компьютерам в Active Directory. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.

Автор - Сёмин Иван

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *