Поиск старых почтовых ящиков в Exchange 2010
Дата: 31.12.2014 Автор Admin
В данной статье я расскажу как с помощью Powershell найти старые почтовые ящики Exchange и отправить уведомление на Email.
Для решения этой задачи мы напишем скрипт, который будет делать следующее:
1) Импортирует модуль Exchange
2) импортирует модуль Active Directory
3) Найдет пользователей которые не заходили в систему 120 дней
4) Проверит у кого из них есть почтовый ящик
5) Полученный результат отправит нам на почту.
Теперь сам скрипт:
# Импорт модуля Exchange
add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010
# Импорт модуля ActiveDirectory
import-module ActiveDirectory
#Удаляем старые файлы inactive.txt и .\mailbox.txt
remove-item .\inactive.txt
remove-item .\mailbox.txt
#Поиск пользователей которые не заходили в систему 120 дней
(get-aduser -filter * -properties lastlogondate | Where-Object {$_.enabled -eq "true"-and $_.lastlogondate -lt (get-date).adddays(-120)}).SamAccountName > .\inactive.txt
$userlist = Get-Content .\inactive.txt
#Проверяем есть ли у них почтовый ящик
foreach ($user in $userlist)
{
$Mailbox = get-mailbox -identity $user
if ($mailbox) {
$user >> .\mailbox.txt
}}
$files = Get-Content .\mailbox.txt
#Формируем тело письма
$body = Get-Content .\mailbox.txt | Sort | Out-String
$body1 = echo The old mailboxes not found | Out-String
#Отправляем письма
if ($files -ne $null)
{
Send-MailMessage -From admin-notification@domain.local -To sysadmin@domain.local -Encoding ([System.Text.Encoding]::UTF8) -attachment .\mailbox.txt -Subject "Обнаружены старые почтовые ящики" -Body $body -SmtpServer EXCHANGE-Server.domain.local
}
else
{
Send-MailMessage -From admin-notification@domain.local -To sysadmin@domain.local -Encoding ([System.Text.Encoding]::UTF8) -Subject "Cтарые почтовые ящики не обнаружены" -Body $body1 -BodyAsHtml -SmtpServer EXCHANGE-Server.domain.local
}
Комментарии