Logo faq-o-matic.net
Logo faq-o-matic.net

Wie finde ich inaktive Computerkonten?

von veröffentlicht am29. März 2005, 15:51 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Active Directory, AD: Erweiterte Abfragen, Scripting   Translate with Google Translate Translate EN   Die angezeigte Seite drucken
Zuletzt aktualisiert: 14. Januar 2008

Im Laufe der Zeit sammeln sich leider durch Rechnertausch, Defekte usw. immer mehr Computerkonten an, zu denen die Rechner gar nicht mehr existieren. Um diese in größerer Stückzahl zu löschen, bietet sich eine Abfrage des Active Directory an. Je nach Betriebssystem der Domänencontroller können dabei unterschiedliche Wege gegangen werden.

Bei einem AD im Modus „Windows 2003 pur“ oder höher kann das Kommandozeilen-Tool „dsquery“ verwendet werden:

dsquery computer -stalepwd 50 

Das findet alle Computer, deren Kennwort seit 50 Tagen nicht geändert wurde (weniger ist nicht so sinnvoll, denn schon allein das Intervall zur automatischen Änderung liegt standardmäßig bei 30 Tagen).

Die Ausgabe des Kommandos dann auch direkt in das Kommando „dsrm“ umgeleitet werden, um die Rechner direkt zu löschen:

dsquery computer -stalepwd 50|dsrm -noprompt -c

Erläuterung: Ohne „-noprompt“ würde dsrm zur Bestätigung auffordern und dann, weil ja gleich der nächste Name per Pipe übergeben wird, fehlschlagen. Mit „-c“ wird die Fehlertoleranz eingeschaltet, die alle Ergebnisse anzeigt und nach Fehlern fortfährt. Sonst macht das keinen Spaß, denn es kann vorkommen, dass ein Computer Unterobjekte hat (z.B. ehemals freigegebene Drucker oder Router-Informationen), und dann kann dsrm ihn nicht einfach löschen.

Wenn zunächst eine Liste aller Computer erzeugt werden soll, um die Löschkandidaten herauszufinden, eignet sich eine Abfrage mit AdFind. Folgende Befehlszeile (eine zusammenhängende Zeile!) schreibt alle Computer mit ihrem letzten Anmeldedatum (lastLogonTimestamp) und der letzten Kennwortänderung in eine Datei. Diese kann dann z.B. mit Excel ausgewertet werden:

  AdFind -tdcs -csv -default -f "(objectClass=computer)" 

name pwdLastSet lastLogonTimestamp>Inaktive_Computer.txt

Auch dies funktioniert nur mit dem Native Mode von Windows 2003 oder neuer, weil nur dort das nützliche Attribut „lastLogonTimestamp“ gepflegt wird. Bei einem älteren Verzeichnis kannst du mit einem VBS-Skript suchen:

http://www.rlmueller.net/Last%20Logon.htm

Achtung: In dem Skript musst du diese Zeile:

  strFilter = "(&(objectCategory=person)(objectClass=user))" 

durch diese ersetzen:

  strFilter = "(&(objectCategory=computer)(objectClass=user))" 

Das gibt dir auf der Kommandozeile (ausführen mit „cscript Skriptname.vbs“, nicht per Doppelklick!) Namen und letztes Anmeldedatum aller Computer aus. Aber Vorsicht: Dieses Skript fragt alle Domänencontroller nach dem letzten Anmeldedatum – in großen Umgebungen wird es also sehr lange brauchen und viel Last erzeugen!

© 2005-2019 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!