Jump to content

dsquery alle Benutzer die nicht disabled sind


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Recommended Posts

Hi,

 

ich würde gerne eine Liste aus meinem AD ziehen, die alle Benutzer beinhaltet, die nicht disabled wurden. Sprich alle aktiven Benutzer. Der aktuelle query (der diese noch beinhaltet) lautet:

 

dsquery user -d ad.local -uc -limit 0 -o upn > c:\users.txt

 

Auf den Technet Seiten zu dem Thema bin ich leider nicht fündig geworden :cry:Microsoft Corporation

 

Viele Grüße

Link to comment

Hallo,

 

versuch mal

 

dsquery user -d ad.local -limit 0 | dsget user -disabled -dn > c:\users.txt

 

Damit bekommst Du das Flag zurück. Die Ausgabe läßt sich dann beispielsweise mit find bzw. findstr filtern.

 

Einfacher geht es sicherlich mit VB-Script o.ä. - davon habe ich nur leider überhaupt gar keine Ahnung. :D

 

Hope it helps...

 

[EDIT] So kannst Du es machen:

dsquery * -filter (userAccountControl:1.2.840.113556.1.4.803:=2)

[/EDIT]

 

Gruß olc

Link to comment

Servus,

 

versuch mal

 

da hast du etwas missverstanden. Er möchte es genau umgekehrt wissen ;) .

 

Zitat:

 

Sprich alle aktiven Benutzer

 

 

 

dsquery user -d ad.local -limit 0 | dsget user -disabled -dn > c:\users.txt

 

Damit werden die DEaktivierten Benutzer ausgegeben.

 

 

[EDIT] So kannst Du es machen:
dsquery * -filter (userAccountControl:1.2.840.113556.1.4.803:=2)

[/EDIT]

 

Das gleiche in grün. Das UserAccountControl mit dem Wert "1.2.840.113556.1.4.803:=2" gibt lediglich die DEaktivierten Benutzer-Objekte zurück.

Link to comment

N'abend,

 

@Daim: Stimmt nicht ganz - 50:50 ;):

 

1. Die Abfrage

dsquery user -d ad.local -limit 0 | dsget user -disabled -dn > c:\users.txt

gibt nicht die Benutzer aus, die deaktiviert sind, sondern gibt alle Benutzer des Abfragescopes aus und das Attribut "disabled" mit den Werten "yes" oder "no" als Zusatz.

D.h. es werden beide Möglichkeiten innerhalb dieser Abfrage aufgeführt. Deshalb mein Hinweis auf die Filterung mittels "find" bzw. "findstr"

 

2. Da hast Du Recht - die zweite Abfrage ist "falsch herum". Habe ich irgendwie verrissen - entschuldigt.

Aber sicherlich kann man auch den Wert der aktiven Benutzer umrechen - fragt nur bitte jetzt nicht nach dem "wie". ;)

 

@Johannes: Das klingt gut, danke für die Rückmeldung. :)

Theoretisch könntest Du über die exportierten CNs in der generierten Textdatei eine weitere Abfrage scripten, mit der Du die UPNs der entsprechenden Benutzer ausliest. Je nachdem wieviel Zeit Du in diese Thematik stecken willst.

Aber selbst mittels Batch-Datei sollten das nur ein paar Zeilen sein... ;)

 

Gruß olc

Link to comment

@ducke: ...womit Du allerdings Recht hast. :D

Bei meinem Test vorhin hatte ich nur die Standard Accounts auf dem System - die ohne UPN sind. :D

Von daher also alles klar. :)

 

@Daim: Kein Thema - hattest ja zu 50% Recht. ;)

Die "-disabled" Option ist bei "dsquery" und "dsget" unterschiedlich - "dsquery" zeigt nur die deaktivierten Benutzer an, "dsquery" die Werte im Ergebnissatz. Daher auch der Umweg im Script...

 

Gruß olc

Link to comment

Danke schon mal für die vielen Hinweise. Jetzt habe ich noch ein kleines Problem. Ich fahre meine Tests gerade auf mein Testlab mit ca. 16.000 Benutzerobjekten und erhalte nach einiger Zeit die Meldung "dsget failed:The server is not operational." Das gleiche habe ich auch wenn ich mit Hyena auf den Server gehe - dort muß ich dann aber einfach nur ein paar min warten und OK klicken und dann läuft das ganze wieder für ein paar tausend User. Ich vermute also ein Zeit- oder Abfragelimit auf den DC's. Gibt es eine Möglichkeit hier eine Art Verzögerung in den Befehl einzubauen um das zu umgehen?

 

Viele Grüße

Link to comment

Wieviele Benutzer wurden denn bis zum Abbruch in die Datei geschrieben?

 

Die Frage ist vielleicht, ob es ein Limit der Objekte ist oder eher ein Zeitlimit.

Das Query-Zeitlimit kannst Du unter Umständen mittels ntdsutil verändern: How to view and set LDAP policy in Active Directory by using Ntdsutil.exe

 

Normalerweise sollten jedoch gerade die MS-eigenen Tools in der Lage sein, die Timeouts durch Range Retrieval etc. zu "umgehen". Komisch...

 

Direkt eine Pause einbauen geht meines Erachtens mit den dstools nicht - Du müßtest ja die Abfrage splitten...

 

Ist es Dir möglich alle Benutzer abzufragen, ohne das dsget? Falls ja, bliebe noch die Möglichkeit zwei Ausgaben zu generieren: Eine aller Benutzer und eine nur mit den deaktivierten (beides mittels dsquery). Diese Ergebnissätze könntest Du dann abgleichen und mergen (mit windiff, winmerge oder soetwas in der Art).

 

Aber vielleicht hat hier noch jemand eine Idee, wie man das mit einem VB-Script o.ä. hinbekommen kann?

 

Gruß olc

Link to comment
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...