Jetzt testen

10 Tipps zur Verwaltung von Active Directory mit der PowerShell

Inhaltsverzeichnis

Post Featured Image

Wer häufig Aufgaben in Active Directory durchführen muss, zum Beispiel das Anlegen und Verwalten von Benutzern und Gruppen, oder die Suche nach Fehlern, kann mit der PowerShell auf zahlreiche Cmdlets zurückgreifen, die das Leben erleichtern. Auch die Verwaltung von Domänen und der Infrastruktur in Active Directory kann mit der PowerShell optimal gelöst werden. Dabei geht es nicht darum, dass die anderen Verwaltungstools durch die PowerShell ersetzt werden. Die PowerShell ergänzt die Verwaltungstools von Active Directory und ist eine zusätzliche Hilfe.



Einstieg in die Verwaltung von Active Directory mit der PowerShell

Um Active Directory mit der PowerShell zu verwalten, muss das Active Directory-Modul für die PowerShell installiert werden. Dieses gehört zu den Standard-Verwaltungstools von Active Directory und kann parallel mit den Tools für die grafische Oberfläche installiert werden.


PowerShell-Modul zur Verwaltung von Active Directory installieren

Auf Domänencontrollern wird das PowerShell-Modul automatisch mit den anderen Verwaltungstools installiert. Auf Rechnern mit Windows 10 erfolgt die Installation über die Features On-demand-Funktion. Dazu wird die Einstellungs-App aufgerufen. Die optionalen Features sind über „Einstellungen Apps“ zu finden. Bei „Optionale Features“ und „Optionale Features hinzufügen“ steht „RSAT: Tools für Active Directory Domain Services und Lightweight Directory Services“ zur Verfügung (siehe Abbildung 1). Mit der Schaltfläche „Installieren“ erfolgt die Integration des Moduls. Durch die Installation des Features steht auch das PowerShell-Modul für Active Directory zur Verfügung.

Figure 1: Screenshot of the Settings app on Windows 10 with the "Optional Features" tab open

Abbildung 1: Screenshot der Einstellungen App auf Windows 10. Der Reiter „Optionale Features“ ist geöffnet


Auf Servern kann die Installation durch das Hinzufügen der Remoteverwaltungstools für Active Directory im Server-Manager oder dem Windows Admin Center erfolgen (Abbildung 2). Hier ist das PowerShell-Modul für Active Directory über Remoteserver-Verwaltungstools > Rollenverwaltungstools > AD DS- und AD LDS-Tools zu finden.

Auf Windows-Servern können die Verwaltungstools von Active Directory natürlich auch über die PowerShell installiert werden. Dazu wird der Befehl Install-WindowsFeature RSAT-AD-PowerShell verwendet.

Figure 2: Screenshot of the Windows Admin Center, installation of the remote administration tools for Actice Directory

Abbildung 2: Installieren der Remoteverwaltungs-Tools auf Servern


 

PowerShell-Remoting aktivieren und Verbindungsprobleme beheben

Damit sich ein Domänencontroller in der PowerShell remote verwalten lässt, muss die Funktion auf dem Zielserver aktiviert werden. Dazu wird in einer PowerShell-Sitzung auf dem Zielserver das Cmdlet Enable-PSRemoting -Force eingegeben (Abbildung 3). Der Befehl richtet die entsprechenden Ausnahmen in der Firewall ein und aktiviert die notwendigen Funktionen. Rückgängig machen lässt sich der Vorgang mit Disable-PSRemoting -Force.

Sollte die Verbindung nicht funktionieren, kann in der Eingabeaufforderung oder PowerShell mit winrm enumerate winrm/config/listener überprüft werden, ob ein Listener mit dem Port 5985 aktiv und an alle IP-Adressen des Servers gebunden ist.

Abbildung 3: Screenshot PowerShell ISE: Überprüfen der Remote-Verbindung für die PowerShell auf Windows-Servern

Abbildung 3:
Überprüfen der Remote-Verbindung für die PowerShell auf Windows-Servern


      

PowerShell-Module und Cmdlets für die Verwaltung von Active Directory anzeigen

Mit dem Cmdlet Get-Command -Module ActiveDirectory lassen sich alle Cmdlets anzeigen, mit denen Active Directory verwaltet werden kann. Der Befehl Get-Module -ListAvailable zeigt wiederum alle Module an. So lassen sich auch die Namen der anderen Module anzeigen, und mit Get-Command deren Cmdlets auslesen (Abbildung 4).

Screenshot PowerShell ISE: Anzeigen der Cmdlets zur Verwaltung von Active Directory

FAbbildung 4:
Anzeigen der Cmdlets zur Verwaltung von Active Directory

      

 

Daten zu Active Directory auslesen

In der PowerShell können auch Daten einzelner Domänen abgefragt werden. Dazu wird das Cmdlet Get-ADDomain verwendet (Abbildung 5). Das Cmdlet Get-ADForest zeigt Informationen zu Gesamtstrukturen an. Auch hier kann nach Spalten gefiltert und mit Pipe an andere Cmdlets weitergegeben werden, zum Beispiel bei Get-ADDomainController. Sinnvoll ist das CMDlet, wenn die FSMO-Rollen pro Domäne angezeigt werden sollen. In jeder Domäne gibt es die drei FSMO-Rollen, die alle mit dem folgenden Befehl angezeigt werden:

Get-ADDomain | Select InfrastructureMaster, RID-Master, PDCEmulator
Abbildung 5: Screenshot PowerShell ISE, Anzeige der Daten einzelner AD-Domänen

Abbildung 5: Anzeige der Daten einzelner AD-Domänen per Get-ADDomain Cmdlet

 

Schemamaster und Domänennamenmaster gibt es nur einmal pro Gesamtstruktur. Diese Informationen lassen sich wiederum mit dem CMDlet Get-ADForest anzeigen:

Get-ADForest | Select-Object DomainNamingMaster, SchemaMaster

Betriebsmasterrollen lassen sich in der PowerShell auf andere Domänencontroller verschieben. Das passende Cmdlet dazu ist:

Move-ADDirectoryServerOperationMasterRole

Mit Get-Help Move-ADDirectoryServerOperationMasterRole lassen sich die umfassende Syntax und einige Beispiele für das Cmdlet anzeigen (das gilt generell für alle Cmdlets in PowerShell).

 

 

Test der Voraussetzungen zum Betrieb von Active Directory

In der PowerShell werden Domänencontroller mit den folgenden Cmdlets überprüft

  • Test-ADDSDomainControllerInstallation: ermöglicht das Testen der Voraussetzungen für die Installation eines Domänencontrollers.
  • Test-ADDSDomainControllerUninstallation
  • Test-ADDSDomainInstallation: Testet die Voraussetzungen für die Installation einer neuen Domäne in Active Directory.
  • Test-ADDSForestInstallation: Testet die Voraussetzungen für die Installation einer neuen Gesamtstruktur in Active Directory
  • Test-ADDSReadOnlyDomainControllerAccountCreation

Damit die Tests ausgeführt werden können, müssen an verschiedenen Stellen noch Kennwörter eingegeben werden. Diese akzeptiert das entsprechende Cmdlet aber nur als sichere Eingabe. Ein Beispiel für den Befehl ist:

Test-ADDSDomainControllerInstallation -DomainName -SafeModeAdministratorPassword (Read-Host -Prompt Kennwort -AsSecureString)

      

Installation eines Domänen Controllers

Nachdem die Serverrolle für Active Directory installiert wurde, kann mit der Einrichtung der Domäne begonnen werden. Die Einrichtung von Active Directory kann mit dem folgenden Cmdlet durchgeführt werden:

Invoke-Command {Install-ADDSDomainController -DomainName -Credential (Get-Credential) -ComputerName

 

Mit der PowerShell Objekte anlegen

Um Active Directory-Objekte , wie Computer, Benutzer oder Gruppen in der PowerShell abzurufen, stellt Microsoft zahlreiche Cmdlets zur Verfügung. Eine Liste wird am schnellsten über den Befehl Get-Command Get-Ad* angezeigt. Um neue Objekte zu erstellen, gibt es ebenfalls zahlreiche Cmdlets. Die Liste wird durch Eingabe von Get-Command New-Ad* angezeigt.

Eine Liste mit Befehlen zum Löschen von Objekten zeigt die PowerShell mit Get-Command Remove-Ad*. Änderungen an Active Directory-Objekten werden mit Set-Cmdlets vorgenommen. Eine Liste wird über Get-Command Set-Ad* angezeigt.


 

Löschschutz in der PowerShell abfragen und setzen

Neben der Möglichkeit die Einstellungen in der grafischen Oberfläche vorzunehmen, kann der Löschschutz in Active Directory auch in der PowerShell abgefragt und gesetzt werden. Um den Löschschutz für ein Objekt abzufragen, wird der folgende Befehl verwendet:

Get-ADObject ‹DN of object› -Properties ProtectedFromAccidentalDeletion

Aktivieren lässt sich der Löschschutz mit:

Set-ADObject ‹DN of object› -ProtectedFromAccidentalDeletion $true

Soll der Löschschutz deaktiviert werden, kann wiederum die Option „$false“ gesetzt werden. Sollen keine Objekte geschützt werden, sondern Organisationseinheiten, werden die CMDlets Get-ADOrganizationalUnit und Set-ADOrganizationalUnit verwendet.

Über den Autor: