Skrypt dodający aliasy SMTP użytkownikom w parametrach AD
Skrypt wykonujemy z poziomu PowerShell ISE po zmianie odpowiednich parametrów. Skrypt musi być uruchomiony na serwerze z zainstalowanym funkcją RSAT, z dostępem do domeny w której chcemy go uruchomić
# Importowanie modułu Active Directory
Import-Module ActiveDirectory
# Definicja zmiennych dla domen
$oldDomain = "staradomena.pl"
$newDomain = "nowadomena.pl"
# Określenie wyróżnionej nazwy (DN) docelowej jednostki organizacyjnej (OU)
$ou = "OU=Użytkownicy_Firma,OU=Kontakty,OU=Organizacja,DC=domena,DC=local"
# Pobranie wszystkich użytkowników (aktywnych i nieaktywnych) w określonym OU wraz z ich UserPrincipalName i ProxyAddresses
$users = Get-ADUser -Filter * -SearchBase $ou -Properties UserPrincipalName, ProxyAddresses, SamAccountName
# Iteracja przez każdego użytkownika (zarówno aktywnego, jak i nieaktywnego) i dodanie aliasu
foreach ($user in $users) {
# Upewnienie się, że użytkownik ma ustawiony UserPrincipalName
if ($user.UserPrincipalName -match "@$oldDomain$") {
# Wyodrębnienie nazwy użytkownika poprzez usunięcie starej domeny z UserPrincipalName
$username = $user.UserPrincipalName -replace "@$oldDomain", ""
# Utworzenie aliasu w formacie username@newDomain
$alias = "smtp:$username@$newDomain"
# Pobranie aktualnych ProxyAddresses (aliasów e-mail)
$proxyAddresses = $user.ProxyAddresses
# Upewnienie się, że ProxyAddresses jest zainicjalizowane
if (-not $proxyAddresses) {
$proxyAddresses = @()
}
# Sprawdzenie, czy alias już istnieje
if ($proxyAddresses -notcontains $alias) {
try {
# Dodanie nowego aliasu
Set-ADUser -Identity $user -Add @{ProxyAddresses=$alias}
Write-Host "Dodano alias $alias dla użytkownika $username"
} catch {
Write-Host "Błąd podczas dodawania aliasu $alias dla użytkownika $username: $_" -ForegroundColor Red
}
} else {
Write-Host "Alias $alias już istnieje dla użytkownika $username"
}
} else {
Write-Host "Pomijanie użytkownika $($user.SamAccountName), ponieważ nie ma poprawnego UserPrincipalName kończącego się na @$oldDomain" -ForegroundColor Yellow
}
}