How to find and disable inactive domain users (Ελληνική Έκδοση)

Σενάριο:

Είμαι ένας φτωχός και μόνος System Administrator…

…και έχω ένα δίκτυο με Active Directory και δεκάδες ή εκατοντάδες χρήστες…

…και έρχονται και φεύγουν πολλοί χρήστες στο δίκτυό μου…

…και δημιουργούνται νέοι λογαριασμοί χρηστών και απενεργοποιούνται παλιοί…

…κλπ, κλπ, κλπ…

…και παίζω με τις μπίλιες από τα παλιά ποντίκια περιμένοντας να ωριμάσει το TCP/IP v6…

…και έρχονται στιγμές που αναρωτιέμαι (and I wonder) μήπως ΞΕΧΑΣΑ (λέω μήπως) κανέναν; Μήπως έφυγε κάποιος και ΞΕΧΑΣΑ να τον ΑΠΕΝΕΡΓΟΠΟΙΗΣΩ; Γιατί ως γνωστόν όταν ένας χρήστης φεύγει ΔΕΝ τον διαγράφουμε αμέσως, αλλά μετά από ένα χρονικό διάστημα. Και είναι κουραστικό να πάρω σβάρνα όλα τα OU’s του AD και να ψάχνω ψύλλους στ’ άχυρα.

Εκτέλεση:

Συνδέομαι σε έναν Domain Controller με Administrative Privileges (λέγε με Διαχειριστικά Δικαιώματα ή με την καινούργια Vista ορολογία της Microsoft, Elevated Privileges – Υψηλότερα Προνόμια), ανοίγω ένα Command Prompt και γράφω:

dsquery user domainroot -inactive 4|dsmod user -disabled yes

Εξήγηση:

  • Η dsquery είναι η εντολή με την οποία εκτελούμε “ερωτήματα” προς το AD (όσοι έχουν ασχοληθεί με DB γνωρίζουν)
  • Η πρώτη παράμετρος ορίζει το αντικείμενο του ερωτήματος και είναι user. Δηλαδή ρωτάω για χρήστες (dsquery user)
  • Η δεύτερη παράμετρος ορίζει το πεδίο έρευνας και είναι domainroot. Δηλαδή ρωτάω για χρήστες σε όλο το domain (dsquery user domainroot).
  • Ακολουθεί η ιδιότητα (attribute) και είναι -inactive (ανενεργοί). Δηλαδή ρωτάω για χρήστες σε όλο το domain οι οποίοι έχουν την ιδιότητα (attribute) να είναι ανενεργοί (dsquery user domainroot -inactive)
  • Το 4 είναι η τιμή (value) της ιδιότητας (attribute) και μετρά χρονικό διάστημα σε εβδομάδες. Δηλαδή ρωτάω (dsquery) για χρήστες (user) σε όλο το domain (domainroot) που έχουν την ιδιότητα (attribute) να είναι ανενεργοί (-inactive) για τέσσερις (4) εβδομάδες

Και το υπόλοιπο; τι είναι το υπόλοιπο;

  • Στη συνέχεια κάνουμε pipe. Ο χαρακτήρας | ονομάζεται pipe. Δηλαδή “διοχετεύουμε” τα αποτελέσματα μιας εντολής σε μια άλλη (όπως στην υδραυλική χρησιμοποιούμε ένα σωλήνα – pipe για να διοχετεύσουμε νερό)
  • Η δεύτερη εντολή είναι η dsmod η οποία χρησιμοποιείται για να πραγματοποιήσουμε αλλαγές στο AD (dsmod – Directory Service Modification)
  • Η παράμετρος είναι user, δηλαδή αλλαγή σε χρήστες (dsmod user)
  • Η ιδιότητα (attribute) είναι -disabled (απενεργοποίηση), δηλαδή “άλλαξε στους χρήστες την ιδιότητα απενεργοποίηση” (dsmod user -disabled
  • Και η τιμή της ιδιότητας -disabled, είναι yes. Η ιδιότητα -disabled μπορεί να πάρει τις τιμές yes και no. Με το yes ενεργοποιείται η ιδιότητα (δηλαδή απενεργοποιείται ο χρήστης) και με το no το αντίθετο.

Συνοψίζουμε. Εκτελούμε μια εντολή η οποία μας επιστρέφει όλους τους χρήστες που είναι ανενεργοί για ένα συγκεκριμένο χρονικό διάστημα και στη συνέχεια το αποτέλεσμα (output) αυτής της εντολής το παρέχουμε (pipe) ως είσοδο (input) σε μια άλλη εντολή η οποία απενεργοποιεί όλους τους χρήστες που βρήκε η πρώτη εντολή.

Όσοι έχουν ασχοληθεί έστω και λίγο με το UNIX γνωρίζουν τη δύναμη των pipes

Επίσημες πληροφορίες:

Microsoft TechNet: dsquery

Οι dsquery και dsmod έχουν και άλλα τέσσερα αδελφάκια: dsadd, dsrm, dsmove και dsget. Και φυσικά μπορούμε να εργαστούμε και στα υπόλοιπα αντικείμενα του Active Directory (OU, groups, computers, κλπ.)

Στο παρακάτω link οι αρχικές πληροφορίες και κάποια απλά παραδείγματα:

Microsoft Knowledge Base Article 322684: How to use the Directory Service Command-Line Tools to manage Active Directory Objects in Windows Server 2003



About this entry