So verwenden Sie Get-ADComputer, um Computereigenschaften in Active Directory mit PowerShell zu ermitteln

Wie man mit PowerShell Active Directory-Computerkonten verwaltet

Wenn Sie schon einmal alte oder inaktive Rechner in Ihrem Active Directory aufspüren mussten, wissen Sie, wie mühsam das sein kann. Manchmal ist es eine langwierige Angelegenheit, herauszufinden, welche Computer sich seit Ewigkeiten nicht mehr im Netzwerk angemeldet haben, und diese Konten dann zu deaktivieren oder zu bereinigen – insbesondere bei manueller Vorgehensweise. Glücklicherweise bietet PowerShell eine recht einfache Möglichkeit, diese Aufgaben zu erledigen, auch wenn der Einstieg etwas knifflig sein kann. Sie müssen sicherstellen, dass die richtigen Module installiert sind, und einige Befehle sind nicht selbsterklärend – beispielsweise, wie man das Datum der letzten Anmeldung ermittelt oder nach Computern filtert, die seit einem bestimmten Zeitraum inaktiv sind. Diese Kurzanleitung hilft Ihnen dabei, all das zu bewerkstelligen, sodass Sie veraltete Konten finden, deaktivieren oder die erforderlichen Bereinigungen durchführen können.

Erste Schritte mit Active Directory-Computern mithilfe von PowerShell

Stellen Sie sicher, dass das Active Directory-Modul installiert und geladen ist.

Wenn Sie Active Directory mit PowerShell verwalten möchten, benötigen Sie zunächst das Active Directory-Modul. Unter Windows 10 oder 11 (und Servern) können Sie dieses über RSAT installieren und aktivieren. Manchmal ist es bereits vorhanden, insbesondere wenn Sie es zuvor aktiviert haben. Falls nicht, gehen Sie wie folgt vor:

Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell

Danach importieren Sie einfach das Modul (falls es nicht automatisch importiert wird):

Import-Module ActiveDirectory

Es ist etwas seltsam, aber manchmal muss man nach der Aktivierung von RSAT einen Neustart durchführen oder das Modul jedes Mal manuell importieren, wenn man eine neue PowerShell-Sitzung öffnet.

So listen Sie grundlegende Computereigenschaften in AD auf

Wenn Sie einen schnellen Überblick über eine bestimmte Maschine erhalten möchten, können Sie folgenden Befehl ausführen:

Get-ADComputer -Identity SRV-DB01

Dadurch werden einige grundlegende Informationen wie der DNS-Name, ob er aktiviert ist, die Objekt-GUID usw.ausgegeben. Wichtige Dinge wie der letzte Login, die man oft zum Bereinigen alter Konten benötigt, sind hier aber natürlich nicht enthalten.

Um alle verfügbaren Objekte zu sehen, müssen Sie Folgendes hinzufügen -Properties *:

Get-ADComputer -Identity SRV-DB01 -Properties *

Anschließend wird eine lange Liste von Attributen angezeigt, darunter auch das schwer zu findende LastLogonDate. Sie können diese Liste auch mit Get-Member weiterleiten, um alle Eigenschaften anzuzeigen:

Get-ADComputer -Filter * -Properties * | Get-Member

Bei manchen Konfigurationen wird das Datum der letzten Anmeldung nicht direkt in LastLogonDate gespeichert (sondern möglicherweise nur in LastLogonTimestamp), aber in den meisten Fällen ist LastLogonDate ausreichend und einfacher zu interpretieren.

Anzeigenamen und Daten der letzten Anmeldung für alle Domänencomputer

Um schnell eine Liste aller Computer mit ihren letzten Anmeldezeitstempeln anzuzeigen, versuchen Sie Folgendes:

Get-ADComputer -Filter * -Properties LastLogonDate | Select-Object Name, LastLogonDate | Format-Table -AutoSize

Dadurch erhalten Sie eine einfache Tabelle mit dem Rechnernamen und dem Zeitpunkt der letzten Domänenanmeldung. Auf manchen Rechnern ist diese Tabelle möglicherweise nicht perfekt – insbesondere bei Umgebungen mit unterschiedlichen Synchronisierungsintervallen –, aber in der Regel ausreichend genau.

Filtern Sie nach veralteten Geräten und deaktivieren Sie diese.

Und jetzt kommt der eigentliche Clou: Computer finden, die sich längere Zeit nicht mehr eingeloggt haben. Angenommen, Sie möchten alle Computer finden, die sich seit mehr als 120 Tagen nicht mehr angemeldet haben, und deren Konten deaktivieren. Das ist nützlich, wenn Sie alte Geräte aussortieren und den Vorgang automatisieren möchten.

Zuerst das Stichtagsdatum ermitteln:

$dateThreshold = (Get-Date).AddDays(-120)

Dadurch wird eine Variable mit einem Datum erstellt, das 120 Tage zurückliegt. Anschließend können Sie Computer anhand des Datums der letzten Anmeldung (LastLogonDate) filtern :

Get-ADComputer -Properties LastLogonDate -Filter * | Where-Object { $_. LastLogonDate -lt $dateThreshold } | Select-Object Name, LastLogonDate

An dieser Stelle erhalten Sie eine Liste alter, ungenutzter Konten. Um diese tatsächlich zu deaktivieren (ohne das Risiko einzugehen, laufende Systeme zu beeinträchtigen), verwenden Sie zuerst den Schalter -WhatIf. Dieser zeigt Ihnen an, was passieren würde, wenn Sie keine Änderungen vornehmen.

Get-ADComputer -Properties LastLogonDate -Filter * | Where-Object { $_. LastLogonDate -lt $dateThreshold } | Set-ADComputer -Enabled $false -WhatIf

Wenn alles gut aussieht, führen Sie denselben Befehl ohne -WhatIf aus :

Get-ADComputer -Properties LastLogonDate -Filter * | Where-Object { $_. LastLogonDate -lt $dateThreshold } | Set-ADComputer -Enabled $false

Hinweis: Vor der Massendeaktivierung von Computern sollten Sie die Angaben immer sorgfältig prüfen. Manchmal können die Daten der letzten Anmeldung aufgrund von Replikationsverzögerungen ungenau oder veraltet sein.

Filter zur Feinabstimmung Ihrer Suche

Möchten Sie alle Server oder ein bestimmtes Betriebssystem finden? Sie können Filter hinzufügen:

(Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows Server*'})

Oder die Suche nach Organisationseinheit eingrenzen, z. B.nur in einer bestimmten Organisationseinheit:

Get-ADComputer -SearchBase 'OU=London, DC=woshub, DC=com' -Filter * -Properties * | Select-Object Name, LastLogonDate

Für komplexere Suchvorgänge funktionieren auch LDAP-Filter, wie zum Beispiel:

Get-ADComputer -LDAPFilter "(name=*db*)"

Reinigung alter oder ungenutzter Maschinen – Kurze Tipps

Sobald Sie sehen, welche Rechner längere Zeit nicht in Betrieb waren, sollten Sie deren Konten löschen oder deaktivieren. Führen Sie -WhatIfvorher unbedingt einen Test durch oder deaktivieren bzw.löschen Sie gegebenenfalls noch benötigte Ressourcen. Wenn alles in Ordnung ist, deaktivieren oder entfernen Sie die entsprechenden Ressourcen.

Darüber hinaus können Sie zusätzliche Informationen abrufen (wie IP-Adressen, Betriebssysteminformationen oder ob sie aktiviert sind) und die Daten sogar für Berichte in das CSV- oder HTML-Format exportieren – äußerst praktisch für Audits und Dokumentationen.

Zusammenfassung

  • Stellen Sie sicher, dass das AD-Modul installiert und geladen ist.
  • Verwendung Get-ADComputermit-Properties LastLogonDate
  • Erstellen Sie einen Datumsschwellenwert und filtern Sie basierend darauf.
  • Testen Sie es, -WhatIfbevor Sie irgendwelche wirklichen Änderungen vornehmen.
  • Das Deaktivieren oder Entfernen alter Maschinen kann automatisiert werden.

Zusammenfassung

PowerShell vereinfacht die Verwaltung von AD-Computerkonten erheblich, sobald man die Filterung und die Eigenschaften verstanden hat. Seien Sie jedoch bei Massenaktionen vorsichtig – führen Sie immer zuerst einen -WhatIfTestlauf durch, insbesondere zu Beginn. Sobald Sie sich sicher fühlen, erspart die Automatisierung von Aufräumaufgaben viel manuellen Aufwand. Hoffentlich hilft Ihnen dies, Zeit zu sparen und die Übersichtlichkeit in Ihrer Domäne zu verbessern!