Kategorien
Active Directory PowerShell Windows Server

Nutzungsspeicherort (Usage Location) mit Azure AD Connect synchronisieren

Erneut ein kurzes, knappes PowerShell Code Snippet welchen den Nutzungsspeicherort (die Usage Location (msExchUsageLocation)) aus dem On-Premise Active Directory per Azure AD Connect ins Azure AD synchronisiert.

Vorab: Das lokale Active Directory muss mittels Exchange Setup um die Exchange Active Directory Attribute erweitert werden, da ansonsten „msExchUsageLocation„, welches die Usage Location im AAD darstellt, fehlt! In der Regel sollte es an dieser Stelle keine Probleme geben, da irgendwo (On-Premise / Hybrid) sicherlich ein Exchange ist. 🙂

Zum Script-Snippet: Das Script liest die AD-User Objekte (Get-ADUser) in einer Organisationseinheit aus und filtert dabei auf die „ObjectClass“. Danach werden neben der „USageLocation“ noch weitere Standort Attribute befüllt.

foreach($ADUser in $(Get-ADUser -SearchBase "OU=Benutzer,OU=<Pfad zur OU>,DC=<SUB>,DC=<DOMAIN>,DC=<TLD>" -Filter {ObjectClass -eq "user"})){
    Write-Host "Passe Benutzer $($ADUser.Name) an.."
    Set-ADUser $ADUser -Replace @{C="DE"}
    Set-ADUser $ADUser -Replace @{co="Deutschland"}
    Set-ADUser $ADUser -Replace @{countryCode=276}
    Set-ADUser $ADUser -Replace @{preferredLanguage="DE-DE"}
    Set-ADUser $ADUser -Replace @{msExchUsageLocation="DE"}
}

Sollte den Usern z.B. noch die Straße, Bundesland oder Ort fehlen, könnte man das Script gleich noch erweitern:

foreach($ADUser in $(Get-ADUser -SearchBase "OU=Benutzer,OU=<Pfad zur OU>,DC=<SUB>,DC=<DOMAIN>,DC=<TLD>" -Filter {ObjectClass -eq "user"})){
    Write-Host "Passe Benutzer $($ADUser.Name) an.."
    Set-ADUser $ADUser -Replace @{C="DE"}
    Set-ADUser $ADUser -Replace @{co="Deutschland"}
    Set-ADUser $ADUser -Replace @{countryCode=276}
    Set-ADUser $ADUser -Replace @{preferredLanguage="DE-DE"}
    Set-ADUser $ADUser -Replace @{msExchUsageLocation="DE"}
    Set-ADUser $ADUser -StreetAddress "<Strasse und Hausnummer>" -State "NRW" -PostalCode "50859" -City "Köln"
}

Sollte man in seiner OU Struktur oder an einer anderen Stelle noch das Land / den Standort versteckt haben, könnte man natürlich noch weiter erweitern:

foreach($ADUser in $(Get-ADUser -SearchBase "OU=Benutzer,OU=<Pfad zur OU>,DC=<SUB>,DC=<DOMAIN>,DC=<TLD>" -Filter {ObjectClass -eq "user"})){
    Write-Host "Passe Benutzer $($ADUser.Name) an"
    if($ADUser.DistinguishedName -imatch "OU=Deutschland,"){
        Set-ADUser $ADUser -Replace @{C="DE"}
        Set-ADUser $ADUser -Replace @{co="Deutschland"}
        Set-ADUser $ADUser -Replace @{countryCode=276}
        Set-ADUser $ADUser -Replace @{preferredLanguage="DE-DE"}
        Set-ADUser $ADUser -Replace @{msExchUsageLocation="DE"}
        if($ADUser.DistinguishedName -imatch "OU=Koeln,"){
            Set-ADUser $ADUser -StreetAddress "<Strasse und Hausnummer>" -State "NRW" -PostalCode "50859" -City "Köln"
        } elseif($ADUser.DistinguishedName -imatch "OU=Xanten,"){
            Set-ADUser $ADUser -StreetAddress "<Strasse und Hausnummer>" -State "NRW" -PostalCode "46509" -City "Xanten"
        } elseif($ADUser.DistinguishedName -imatch "OU=Windeck,"){
            Set-ADUser $ADUser -StreetAddress "<Strasse und Hausnummer>" -State "NRW" -PostalCode "51570" -City "Windeck"
        }
    } elseif($ADUser.DistinguishedName -imatch "OU=USA,"){
        Set-ADUser $ADUser -Replace @{C="US"}
        Set-ADUser $ADUser -Replace @{co="USA"}
        Set-ADUser $ADUser -Replace @{countryCode=840}
        Set-ADUser $ADUser -Replace @{preferredLanguage="EN-US"}
        Set-ADUser $ADUser -Replace @{msExchUsageLocation="US"}
        if($ADUser.DistinguishedName -imatch "OU=LasVegas,"){
            Set-ADUser $ADUser -StreetAddress "3600 S Las Vegas Blvd" -State "Nevada" -PostalCode "89109" -City "Las Vegas"
        } elseif($ADUser.DistinguishedName -imatch "OU=Detroit,"){
            Set-ADUser $ADUser -StreetAddress "1777 3rd Ave" -State "Michigan" -PostalCode "48226" -City "Detroit"
        }
    }
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.