Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $cldisc = "" # Кластерный ресурс для проверки
- If ((Test-Path $cldisc) -eq $true) # Check if script run on active node
- {
- # Загрузка зависимостей
- Add-PSSnapin Quest.ActiveRoles.ADManagement
- Import-Module Image
- # Переменные
- $searchRoot = "" # Контейнер поиска в AD
- $photoDir = "" # Директория с фотографиями
- $tmpPhotoName = "" # Имя временного файла фотографии
- $delay = -24 # Время в течении которого фотография считается новой (в часах)
- $imageWidth = "96" # Размеры фотографии
- $imageHeigth = "96" # Размеры фотографии
- $displayEvents = 2 # Уровень детализации (1 - все, 2 - предупреждения, 3 - ошибки, 4 - ничего)
- # Настройки почтовых уведомлений
- $to1 = ”” # получатель уведомлений
- $smtpServer = "" # почтовый сервер
- $SMTPPort = ""
- $msg = new-object Net.Mail.MailMessage
- $msg.From = "" # адрес, который стоит в поле "От". лучше ставить что-нибудь типа no-reply
- $msg.To.Add($to1)
- $tmpPhoto = $tmpPhotoName # $photoDir + "\" + $tmpPhotoName
- $usersWithPN = Get-QADUser -IncludedProperties extensionAttribute15,thumbnailPhoto -SearchRoot $searchRoot | Where-Object {$_.extensionAttribute15 -ne $null}
- $lastExTime = (Get-Date).AddHours($delay)
- $eventsArray=@()
- foreach ($user in $usersWithPN)
- {
- $pn = $user.extensionAttribute15
- $fname = "\s{1}" + $pn + "\.\S{3,4}"
- $content = Get-ChildItem $photoDir | Where-Object {$_.Name -match $fname}
- if ($content -ne $null)
- {
- if ($content.Count -eq $null)
- {
- $wTime = $content.LastAccessTime
- if (($wTime -gt $lastExTime) -or ($user.thumbnailPhoto -eq $null))
- {
- try
- {
- if ((Test-Path $tmpPhoto) -eq $true)
- {
- Remove-Item $tmpPhoto -Force
- }
- $image = Get-Image $content.FullName
- $image = $image | Set-ImageFilter -filter (Add-ScaleFilter -Width $imageWidth -Height $imageHeigth -passThru) -passThru
- $image.SaveFile($tmpPhoto)
- $photo = [byte[]](Get-Content $tmpPhoto -Encoding byte)
- }
- catch
- {
- $message = "Ошибка. Фотографию " + $content.FullName + " для пользователя " + $user.LastName + " " + $user.FirstName + " (" + $pn + ") не удалось открыть."
- $event = New-Object PSObject
- $event | Add-Member -MemberType NoteProperty -Name "Severity" -Value 3
- $event | Add-Member -MemberType NoteProperty -Name "Message" -Value $message
- $eventsArray = $eventsArray + $event
- Remove-Item -Path "Variable:\event"
- continue
- }
- try
- {
- Set-QADUser $user -objectAttributes @{thumbnailPhoto=$photo}
- $message = "Предупреждение. У пользователя " + $user.LastName + " " + $user.FirstName + " (" + $pn + ") фотография обновлена."
- $event = New-Object PSObject
- $event | Add-Member -MemberType NoteProperty -Name "Severity" -Value 2
- $event | Add-Member -MemberType NoteProperty -Name "Message" -Value $message
- $eventsArray = $eventsArray + $event
- Remove-Item -Path "Variable:\event"
- }
- catch
- {
- $message = "Ошибка. Пользователю " + $user.LastName + " " + $user.FirstName + " (" + $pn + ") не удалось загрузить фотографию."
- $event = New-Object PSObject
- $event | Add-Member -MemberType NoteProperty -Name "Severity" -Value 3
- $event | Add-Member -MemberType NoteProperty -Name "Message" -Value $message
- $eventsArray = $eventsArray + $event
- Remove-Item -Path "Variable:\event"
- }
- }
- else
- {
- $message = "Информация. У пользователя " + $user.LastName + " " + $user.FirstName + " (" + $pn + ") фотография актуальная."
- $event = New-Object PSObject
- $event | Add-Member -MemberType NoteProperty -Name "Severity" -Value 1
- $event | Add-Member -MemberType NoteProperty -Name "Message" -Value $message
- $eventsArray = $eventsArray + $event
- Remove-Item -Path "Variable:\event"
- }
- }
- else
- {
- $message = "Ошибка. Для пользователя " + $user.LastName + " " + $user.FirstName + " (" + $pn + ") существует несколько фотографий."
- $event = New-Object PSObject
- $event | Add-Member -MemberType NoteProperty -Name "Severity" -Value 3
- $event | Add-Member -MemberType NoteProperty -Name "Message" -Value $message
- $eventsArray = $eventsArray + $event
- Remove-Item -Path "Variable:\event"
- }
- }
- else
- {
- $message = "Ошибка. Для пользователя " + $user.LastName + " " + $user.FirstName + " (" + $pn + ") нет фотографии."
- $event = New-Object PSObject
- $event | Add-Member -MemberType NoteProperty -Name "Severity" -Value 3
- $event | Add-Member -MemberType NoteProperty -Name "Message" -Value $message
- $eventsArray = $eventsArray + $event
- Remove-Item -Path "Variable:\event"
- }
- }
- $events = $eventsArray | Where-Object {$_.Severity -ge $displayEvents} | ConvertTo-Html
- $msg.Subject = "AD Sync report." + "Уровень логирования: " + $displayEvents
- $msg.IsBodyHTML = $true
- $msg.Body = $events
- $smtp = new-object Net.Mail.SmtpClient($smtpServer,$SMTPPort)
- $smtp.Send($msg)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement