Microsoft 365

Active Directory / Exchange: Onboarding von Benutzern automatisieren (Skript)

Wenn neue Mitarbeiter eingestellt werden, dann gibt es viel zu tun.  Um seitens der IT-Abteilung sicherzustellen, dass alles klappt, kann der Onboarding-Prozess in Form eines Skripts automatisiert werden.

Das folgende Beispiel-Skript by pewa2303

  • kopiert die Eigenschaften eines bestehenden Active Directory Benutzers
  • kopiert die Gruppenmitgliedschaften
  • erstellt dann mithilfe der Informationen einen neuen Benutzer
  • erstellt eine neue Mailbox (inkl. Datenbank-Abfrage)

Das Skript kann auf einem Domaincontroller ausgeführt werden. Damit erspart man sich die Konfiguration in Active Directory und anschließend in Exchange. Auch für das Offboarding habe ich vor einiger Zeit ein Skript Active Directory / Exchange: Offboarding von Benutzern automatisieren (Skript) zur Verfügung gestellt.

Einfach den Text in PowerShell ISE kopieren oder

Download: User_anlegen_AD_EX_NEW_HP

Anmerkung:

Zeile 71 -92:  Exchange Datenbank-Namen angepassen

Zeile 104: Bei -ConnectionUri muss der Name des Exchange Servers eingetragen werden

 

########################## BY PEWA 2303 ##########################

######################### https://sid-500.com #######################


######## Kopiert alle Eigenschaften eines bestehenden Benutzers ###############
################## und legt die Exchange Mailbox an #####################


###################### Import ActiveDirectory #########################


Import-Module ActiveDirectory


################################################################

Clear-host


############### Check, ob der zu kopierende User existiert ###################

do {
$nameds = Read-Host "Von welchem Benutzer sollen die Informationen kopiert werden? (Format z.B.: m.mustermann)"
if (dsquery user -samid $nameds){Write-host -foregroundcolor Green "AD User gefunden!" 
}

elseif ($nameds = "null") {Write-Host -foregroundcolor Red "AD User nicht gefunden!, Probieren Sie mmustermann oder mustermann"}
}
while ($nameds -eq "null")
 
 
################ Alle Infos vom bestehenden User abrufen ##################

$name = Get-AdUser -Identity $nameds -Properties *

$DN = $name.distinguishedName
$OldUser = [ADSI]"LDAP://$DN"
$Parent = $OldUser.Parent
$OU = [ADSI]$Parent
$OUDN = $OU.distinguishedName
$NewUser = Read-Host "Anmeldename des neuen Benutzers (Format: v.nachname)"
$firstname = Read-Host "Vorname"
$Lastname = Read-Host "Nachname"
$NewName = "$firstname $lastname"
$domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() 
$prof = $name.ProfilePath


#################### Neuen Benutzer erstellen ##########################


New-ADUser -SamAccountName $NewUser -Name $NewName -GivenName $firstname -displayname "$firstname $lastname" -Surname $lastname -Instance $DN -Path "$OUDN" -AccountPassword (Read-Host "New Password" -AsSecureString) –userPrincipalName $NewUser@$domain -Company $name.Company -Department $name.Department -Manager $name.Manager -title $name.Title -Office $name.Office -City $name.city -PostalCode $name.postalcode -Country $name.country -Fax $name.fax -State $name.State -StreetAddress $name.StreetAddress -Enabled $true -ProfilePath ($prof -replace $name.SamAccountName, $NewUser) -HomePage $name.wWWHomePage -ScriptPath $name.ScriptPath
Set-ADUser -identity $newUser -ChangePasswordAtLogon $true


#################### Gruppenmitgliedschaften kopieren ##################

write-host "Bitte Warten ... Kopieren der Gruppenmitgliedschaften ..."

$groups = (GET-ADUSER –Identity $name –Properties MemberOf).MemberOf
foreach ($group in $groups) {

Add-ADGroupMember -Identity $group -Members $NewUser
}
$count = $groups.count

################### Auswahl der Exchange Datenbank ####################

Write-host "1- DB1"
Write-host "2- DB2"
Write-host "3- DB3"
Write-host "4- DB4"
Write-host "5- DB5"
Write-host "6- DB6"
Write-host "7- DB7"
Write-host "8- DB8"
$db = read-host "In welcher Exchange Datenbank soll der Benutzer angelegt werden 1-8 ?"

switch ($db) 
 { 
 1 {$db = "DB1"} 
 2 {$db = "DB2"} 
 3 {$db = "DB3"} 
 4 {$db = "DB4"}
 5 {$db = "DB5"}
 6 {$db = "DB6"}
 7 {$db = "DB7"}
 8 {$db = "DB8"}

default {$db = "DB1"}
 }

############################ Wartezeit  ################################


write-host "Bitte Warten ... die Mailbox wird angelegt ..."

Start-Sleep -s 5

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://Einsetzen/PowerShell/ -Authentication Kerberos -ErrorAction SilentlyContinue -WarningAction SilentlyContinue
import-pssession $Session -ErrorAction SilentlyContinue -WarningAction SilentlyContinue

#################### Neue Mailbox wird erstellt #########################


Enable-Mailbox -Identity $Newuser -alias $newuser -Database "$db" -ErrorAction silentlycontinue -WarningAction silentlycontinue

Clear-Host

$final1=get-aduser -identity $newuser -properties * | fl Displayname,CanonicalName,Department,Profilepath,ScriptPath,whenCreated

$final3=get-mailbox -identity $newuser

Start-Sleep -s 5

Write-Host "Folgender Benutzer wurde erfolgreich in Active Directory und Exchange angelegt:"

$final1

$final3

$final2=Get-ADPrincipalGroupMembership -Identity $newuser | fl Name
""
""

Write-Host "Der Benutzer ist Mitglied folgender Gruppen:"
""
$final2
""
""
Write-Host -ForegroundColor Green "Das Skript wurde erfolgreich ausgeführt"

$finalall=$final1+$final2+$final3


PAUSE

3 replies »

  1. Hallo Patrick,

    sehr gute Scripte und überhaupt eine gute Website! Das Script oben geht immer davon aus das eine Mailbox angelegt werden soll, kann dies auch als Optional dargestellt werden. Ich kann selber leider nicht programmieren, sonst hätte ich gleich die Lösung gepostet.

    Viele Grüße
    Maik

    Like

    • Hallo, du musst einfach nur teile weglassen. Interessant wird es bei der Auswahl der Mailbox Datenbank. Ab da kann man Teile weglassen. Einfach ausprobieren. Lg P

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.