De så kallade DS-kommandona är Dsadd (skapa), Dsmod (modifiera), Dsrm (radera), samt Dsquery och Dsget för att göra sökningar. En stötesten kan vara att man med dessa verktyg måste ange objektens Distinguished Name (DN), men jag ska visa ett trick som gör det möjligt att kringgå detta.
Ett DN kan se ut på följande sätt: CN=Administrator,CN=Users,DC=addskills,DC=se. Om du googlar på Distinguished Name hittar du snabbt ett antal sidor som redogör för hur detta fungerar.
Eftersom dessa DN kan bli ganska långa och eftersom man antagligen inte kan ett givet objekts DN utantill blir det omständligt att använda DS-kommandon för att skapa till exempel ett användarkonto. DS-verktygen kommer snarast till sin rätt när man vill modifiera ett användarkonto – till exempel byta telefonnummer – eller i synnerhet när man vill hitta information om konton.
Om jag vill just byta telefonnummer på ett konto, Nils Nilsson, i OU:t Sales under OU:t Stockholm i vår domän, skulle det se ut på följande sätt: Dsmod user ”CN=Nils Nilsson,OU=Sales,OU=Stockholm,DC=addskills,DC=se” –tel ”08-123 123 123”. Så du ser att det är en simpel syntax; en fördel med DS-kommandona är att de är enkla, man lär sig snabbt. Du kan alltid få fram hjälpfilen, dels för respektive verktyg (till exempel Dsadd /?), dels för de olika objekten verktyget kan hantera (till exempel Dsadd user /?).
Men ponera att jag inte vet var kontot Nils Nilsson ligger; jag vet att vi har en medarbetare som heter Nils, men jag är osäker på i vilket OU kontot ligger, och förresten kan jag inte vår OU-struktur utantill. – Här kommer det användbara tecknet pipe in. Jag kan fråga AD efter kontot, och sedan ”pipa” (eller vidarebefordra) svaret till ett kommando som modifierar det, på följande sätt:
Dsquery user –name ”Nils*” | Dsmod user –tel ”08-123 123 123”.
Det första ledet gör en sökning efter ett användarkonto som heter Nils, svaret blir kontots DN, som vidarebefordras in i DS-kommandot som modifierar kontot. På detta sätt behöver du aldrig veta var kontot ligger, och du behöver heller inte skriva in hela DN. Du kan också vidarefordra i flera led, som i exemplet nedan.
Pipe, eller vidarebefordring, är särskilt användbart vid sökningar. Ponera att du vill veta vilka grupper som Nils Nilsson är medlem i. Gör en sökning efter kontot för att få tag i dess DN, och ställ sedan en fråga om kontot: Dsquery user –name ”Nils*” | Dsget user –memberof. Vill du få en lista över alla grupper han är medlem i, även via gruppmedlemskap (grupper i grupper), lägger du till växeln –expand.
Med DS-kommandon kan du även hitta information om konton som inte syns i Active Directory Users and Computers, till exempel SID:ar. Ponera att du vill ha rätt på alla SID:ar för alla konton i gruppen Domain Admins. Det får du enkelt kunna få fram på följande sätt:
Dsquery group –name ”Domain Admins” | Dsget group –members | Dsget user –sid. I första ledet söker vi efter gruppen Domain Admins, helt enkelt för att vi vill ha gruppens DN; vi vidarebefordrar detta DN till nästa fråga, som ger oss en lista over alla konton som är medlemmar i Domain Admins; och avslutningsvis frågar vi efter respektive kontos SID. Efter någon sekund får vi en lista på alla SID:ar för de konton som är medlemmar i gruppen Domain Admins.
Dessa exempel ger en antydan om hur användbara DS-kommandona är. Om du har verktygen installerade på din klientdator får du ett mycket snabbt sätt att få fram information om konton i ditt AD. Notera att alla har läsbehörigheter på objekten i AD, så om du endast vill göra sökningar behöver du inte ens öppna kommandoprompten som administratör.
Simon Lindfors
MCSE, MCT