Windows 2003 Shell Scripting

Scripting-Hilfe für ActiveDirectory

dsquery

dsquery ist sozusagen ein Vorsatzadapter zu den restlichen Kommandos. Diese erwarten nämlich immer einen DN, mit dem ein Objekt eindeutig identifiziert wird. Wenn Sie dieses Attribut nicht wissen (weil Sie beispielsweise alle Accounts deaktivieren möchten, die länger als vier Wochen nicht angemeldet waren), dann hilft Ihnen dsquery weiter. Als Ergebnis der Suche wird jeweils der DN auf die Standardausgabe ausgegeben und kann so direkt per Pipelining an dsmod und die anderen Kommandos übergeben werden.

Damit Sie nicht alle LDAP-Queries selbst erstellen müssen, existiert eine ganze Reihe von Unterkommandos für vorbereitete Suchen:

Tabelle: dsquery-Subkommandos

Kommando

Bedeutung

dsquery computer

sucht nach Computerkonten

dsquery contact

sucht nach Kontakten

dsquery subnet

sucht nach Subnets

dsquery group

sucht nach Gruppen

dsquery ou

sucht nach Organisationseinheiten

dsquery site

sucht nach Sites

dsquery server

sucht nach Domain-Controllern

dsquery user

sucht nach Benutzerkonten

dsquery quota

sucht nach Quoteninformationen

dsquery partition

sucht nach Verzeichnispartitionen

dsquery *

erlaubt die freie Definition beliebiger LDAP-Anfragen

Beispiele

Bleiben wir bei unseren Kontakten aus den Beispielen mit csvde und ldifde: Auch hier sollen wieder alle Kontakte aus der OU „produktion“ gesucht werden. Im einfachsten Fall geben Sie folgendes Kommando ein:

dsquery contact

Als Ergebnis erhalten Sie folgende Ausgabe (auf meiner Maschine):

"CN=Norman Kerth,OU=Produktion,DC=shellbook,DC=com"

"CN=Julius Caesar,OU=Produktion,DC=shellbook,DC=com"

Wird nämlich keine Definition des Startpunkts der Suche getroffen, dann gilt Folgendes: Root der Domain und der gesamte Baum abwärts. Dies zeigt sich besonders deutlich beim Subkommando für die Benutzer:

C:\tmp>dsquery user

"CN=Administrator,CN=Users,DC=shellbook,DC=com"
"CN=Guest,CN=Users,DC=shellbook,DC=com"
"CN=SUPPORT_388945a0,CN=Users,DC=shellbook,DC=com"
"CN=krbtgt,CN=Users,DC=shellbook,DC=com"
"CN=Franz Testhuber,OU=Produktion,DC=shellbook,DC=com"
"CN=Student37,OU=Kurs,DC=shellbook,DC=com"
"CN=Student38,OU=Kurs,DC=shellbook,DC=com"
C:\tmp>

Es werden die DNs aller Benutzer aus der gesamten Domain ausgegeben. Soll dies nicht der Fall sein, kann ein Startknoten angegeben werden:

dsquery user "ou=produktion,dc=shellbook,dc=com"

Alternativ ist die Angabe der konstanten Werte forestroot oder domainroot möglich.Ein weiteres Beispiel zeigt, wie leicht unter Windows Server 2003 Abfragen des AD über die Kommandozeile fallen: Aufgelistet werden sollen die DNs aller Gruppen, in deren Namen die Zeichenfolge „domain“ vorkommt.

dsquery group -name *domain*

Optionen

Für jedes Subkommando ist eine Reihe von Optionen möglich, die zum Großteil über alle Subkommandos hin konsistent sind. Sie können sich die Liste der Optionen mit dem Kommando

dsquery <subcmd> /?

ausgeben lassen.

Die wichtigsten gemeinsamen Optionen listet die folgende Tabelle auf. Einzelne Subkommandos definieren weitere Optionen, wie beispielsweise die Option -inactive <wochen> für die Subkommandos user und computer.

Option

Bedeutung

-scope <scopewert>

Legt die Suchtiefe fest. Mögliche Werte sind subtree, onelevel oder base

-u <user>

Verwendet den Benutzernamen zur Anmeldung am AD

-p <password>

Verwendet das Passwort zur Anmeldung am AD

- q

Unterdrückt alle Ausgaben, außer den Ergebnissen

- r

Verfolgt Verweise (referrals) im AD. Ist per Default nicht aktiv

- gc

Sucht im Global Catalog

- limit <anzahl>

Wichtig! Legt fest, wie viele Objekte ausgegeben werden, auf die die Suchbedingungen passen. Ist dieser Wert 0, werden alle Objekte ausgegeben. Wird diese Option nicht angegeben, dann werden nur die ersten 100 Objekte ausgegeben!

- uc[i|o]

Gibt an, dass Ein- oder Ausgaben bei Pipes im Unicode-Format vorliegen

- s <server>

Verwendet den angegebenen DC

- d <domain>

Verwendet die angegebene Domain