Снова автоматизация


и на этот раз небольшой рутинной задачки.

Пока вовнеи рассуждают о рыбах почтовых ящиков уволенных сотрудников, такую задачу быстро решили вот так:

Задачу разбиваем на два блока,

Сперва выполняем этот блок.

$umove  = @()
$uclear = @()
$err    = @()
$m      = 2
$body   = New-Object Text.StringBuilder

$org = Get-ADOrganizationalUnit -Filter «Name -eq ‘Disabled Users'» -Properties CanonicalName
$du = Get-User -RecipientTypeDetails UserMailbox | Where {$_.UserAccountControl -match ‘AccountDisabled’}
$dm = $du | Get-Mailbox
$dm | Foreach {
if($_.OrganizationalUnit -ne $org.CanonicalName) {
try {
Move-ADObject -Identity $_.DistinguishedName -TargetPath $org.DistinguishedName
$umove += «`t$($_.DistinguishedName) перенесена в $($org.DistinguishedName)»
}
catch {
$err += «`t$($_.DistinguishedName) не перенесена в $($org.DistinguishedName) — $_»
}
}

$l = New-TimeSpan (Get-MailboxStatistics $_).LastLogonTime.Date $d.AddMonths(-$m).Date
if ($l.Days -eq 1) {
$uclear += «`t$($_.DistinguishedName) будет очищен на следующий день»
}
}

if($umove) {
$body.AppendLine((«Перенесенные:»,$umove | Out-String)) | Out-Null
}

if($err) {
body.AppendLine((«Ошибки:»,$err | Out-String)) | Out-Null
}

if($uclear) {
body.AppendLine((«Для очистки:»,$uclear | Out-String)) | Out-Null
}

$body = $body.ToString()
if($body)
{
Send-MailMessage -From a@contoso.com -To b@contoso.com -Subject «Отчет» -Body $body -SmtpServer smtp.contoso.com
}

 

##############################################Запускать эту часть блока с интервалом для репликации всех изменений.

 

$m = 2
$path = «\\$env:ComputerName\C$\Pst»
$du = Get-User -RecipientTypeDetails UserMailbox | Where {$_.UserAccountControl -match ‘AccountDisabled’}
$dm = $du | Get-Mailbox
$dusers = $dm | Where { (Get-MailboxStatistics $_).LastLogonTime.Date -le (Get-Date).AddMonths(-$m).Date}

foreach($duser in $dusers) {
$mpath = Join-Path $path «$($user.alias).pst»
New-MailboxExportRequest -Mailbox $duser -FilePath $mpath | Out-Null

while(!(Get-MailboxExportRequest -Mailbox $duser -Status Completed))
{
Start-Sleep -Sec 300
}

$req = Get-MailboxExportRequest -Mailbox $duser -Status Completed
if($req) {
$req | Remove-MailboxExportRequest -Confirm:$false
Search-Mailbox -id $duser -DeleteContent -Confirm:$false -Force
}
}

 

Что делаем в рамках задачи?

Сначала ищем отключенные учетки уволенных сотрудников, с условием что отключены они более 2-х месяцев назад, перемещаем такую учетную запись в спец контейнер с уведомлением что она была перенесена, выполняем экспорт в .PST, и перед очисткой ящика отсылаем за день уведомление что ящик будет очищен.

 

Реклама

Снова автоматизация: 5 комментариев

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s