ADAC nutzen

Das AD Administrative Center - oder nur kurz ADAC - ermöglicht die grafische Nutzung der PowerShell. Im Grunde ist das ADAC einfach nur eine grafische Oberfläche (GUI) für die PowerShell.

Active Directory Administrative Center (ADAC)

Active Directory Administrative Center (ADAC)

In der unteren Hälfte kann man den PowerShell Verlauf für die umgesetzten Aktiven in der ADAC-GUI erkennen, die sich einfach dort herauskopieren und als Basis für eigene Code nutzen kann.

Übungsidee: man erstelle eine neue OU. In dieser OU werden eine neue Globale Gruppe und ein neuer User erstellt. Zuletzt soll der neue User Mitglied der neuen Gruppe werden.

Der folgende Code aus dem ADAC wurde aus Gründen der Lesbarkeit mit PowerShell Zeilenumbrüchen versehen.

Code aus der Verlaufsliste / der PowerShell-History des ADAC
New-ADOrganizationalUnit -Description:"Eine erste OU zum Testen" `
    -Name:"TestingOU" -Path:"DC=firma,DC=local" `
    -ProtectedFromAccidentalDeletion:$true -Server:"DC01.firma.local"

Set-ADObject -Identity:"OU=TestingOU,DC=firma,DC=local" `
    -ProtectedFromAccidentalDeletion:$true -Server:"DC01.firma.local"

New-ADGroup -Description:"Eine erste globale Testgruppe" `
    -GroupCategory:"Security" -GroupScope:"Global" `
    -Name:"TestGruppe" -Path:"OU=TestingOU,DC=firma,DC=local" `
    -SamAccountName:"TestGruppe" -Server:"DC01.firma.local"

New-ADUser -City:"Braunschweig" `
    -Description:"Ein Standarduser für die firma.local Domäne" `
    -DisplayName:"Joe Standard" -GivenName:"Joe" -Name:"Joe Standard" `
    -Path:"OU=TestingOU,DC=firma,DC=local" -SamAccountName:"joestandard" `
    -Server:"DC01.firma.local" -Surname:"Standard" -Type:"user"

# Set-ADAccountPassword -Identity:"CN=Joe Standard,OU=TestingOU,DC=firma,DC=local"
#   -NewPassword:"System.Security.SecureString"
#   -Reset:$true -Server:"DC01.firma.local"

Enable-ADAccount -Identity:"CN=Joe Standard,OU=TestingOU,DC=firma,DC=local" `
    -Server:"DC01.firma.local"

Set-ADAccountControl -AccountNotDelegated:$false `
    -AllowReversiblePasswordEncryption:$false `
    -CannotChangePassword:$false -DoesNotRequirePreAuth:$false `
    -Identity:"CN=Joe Standard,OU=TestingOU,DC=firma,DC=local" `
    -PasswordNeverExpires:$false -Server:"DC01.firma.local" -UseDESKeyOnly:$false

Set-ADUser -ChangePasswordAtLogon:$false `
    -Identity:"CN=Joe Standard,OU=TestingOU,DC=firma,DC=local" `
    -Server:"DC01.firma.local" -SmartcardLogonRequired:$false

Set-ADGroup -Add:@{'Member'="CN=Joe Standard,OU=TestingOU,DC=firma,DC=local"}
    -Identity:"CN=TestGruppe,OU=TestingOU,DC=firma,DC=local" `
    -Server:"DC01.firma.local"

Der Code enthält aufgrund der Automatisierungen innerhalb des ADAC diverse Redundanzen bei den Befehlen. So kann das ADAC beliebige Einträge in seinen Formularen für die AD-Objekte sauber abbilden.

Wir können das Ganze natürlich analysieren und auf eine gewünschte praktische Version shrinken.

Wir bilden also den ganzen Vorgang über Skripting mit eigenen Objekten für OU, User, Group und Membership ab.

Angepasster Code für eigenene neue AD-Objekte
# Neue OU erstellen: DienstagOU
# ------------------
New-ADOrganizationalUnit -Description:"Eine erste OU zum Testen"
    -Name:"DienstagOU" -Path:"DC=firma,DC=local"
    -ProtectedFromAccidentalDeletion:$true -Server:"DC01.firma.local"

# Neue Globale Gruppe erstellen: DienstagGruppe
# ------------------------------
New-ADGroup -Description:"Eine zweite globale Testgruppe" `
    -GroupCategory:"Security" -GroupScope:"Global" `
    -Name:"DienstagGruppe" -Path:"OU=DienstagOU,DC=firma,DC=local" `
    -SamAccountName:"DienstagGruppe" -Server:"DC01.firma.local"

# Neuen Benutzer erstellen: joedienstag
# ------------------------- (siehe folgende Recherchen...)
# s. z.B. https://blog.netwrix.de/2019/11/05/erstellen-neuer-active-directory-benutzer-mit-powershell/
# MS Learn: https://learn.microsoft.com/en-us/powershell/module/activedirectory/new-aduser?view=windowsserver2022-ps
New-ADUser -Name "Joe Dienstag" -GivenName "Joe" `
    -Surname "Dienstag" -SamAccountName "joedienstag" `
    -UserPrincipalName "joedienstag@firma.local" `
    -Path "OU=DienstagOU,DC=firma,DC=local" `
    -AccountPassword(Read-Host -AsSecureString "Bitte Passwort eingeben") `
    -Enabled $true
# ------------------------- (Frage: City / l einstellen -> Braunschwaach ?)

# Mitgliedschaft Benutzer (neu) in Gruppe (neu)
# ---------------------------------------------
Set-ADGroup -Add:@{'Member'="CN=Joe Dienstag,OU=DienstagOU,DC=firma,DC=local"} `
    -Identity:"CN=DienstagGruppe,OU=DienstagOU,DC=firma,DC=local" `
    -Server:"DC01.firma.local"

Und mit entsprechender Vorgehensweise können wir auch noch die Löschung (rekursiv) unserer erstellten Übungs-OU veranlassen.

ACHTUNG ACHTUNG - OU rekursiv löschen!
# ACHTUNG: OU rekursiv löschen! ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG
# -----------------------------------------------------------------------------------------------------
Set-ADObject -Identity:"OU=DienstagOU,DC=firma,DC=local"
    -ProtectedFromAccidentalDeletion:$false -Server:"DC01.firma.local"

Remove-ADObject -Confirm:$false
    -Identity:"OU=DienstagOU,DC=firma,DC=local"
    -Recursive:$true -Server:"DC01.firma.local"

Alle diese Skripte lassen sich natürlich effizient mit Parametern und mittels PowerShell-Funktionen umsetzen.

Gefahr

Insbesondere bei Lösch-Techniken sollte man dann natürlich große Sorgfalt an den Tag legen und entsprechende Nachfragen und Kontrollen einbauen!