[AD] DSQuery / DSGet piping

Pagina: 1
Acties:
  • 1.458 views sinds 30-01-2008
  • Reageer

  • Venator
  • Registratie: April 2000
  • Laatst online: 18-02 18:38
Hallo mensen,

Ik ben op mijn werk bezig met wat opschoonwerkzaamheden. Ik wil van een aantal AD-structuren een overzicht creeëren van:

- bepaalde groepen in bepaalde OU's (bv OU Juniors in OU Sales in OU Employees)
- Gebruikers van deze groepen

Ik weet dat je hier dsquery in combinatie met dsget commando's kan gebruiken en hiermij kan ik prima een lijst maken van iedereen die bij een bepaalde groep hoort en pipen naar een .txt file voor verdere verwerking. Nu zit hier het probleem. In deze textfile worden netjes alle namen inclusief Distinguished name gedumped, maar helaas niet de groepen waartoe ze behoren. Ik gebruik het onderstaande commando:

dsquery group OU=Juniors,OU=Sales
s,OU=Employees,dc=sub,dc=domein,dc=com -limit 0 | dsget group -members > GroupMembers.txt


Nu kun je ook de namen van de groepen dumpen, maar dit gaat dan in een apart bestand:

dsquery group OU=Juniors,OU=Sales
s,OU=Employees,dc=sub,dc=domein,dc=com -limit 0 | dsget group -desc
> GroupNames.txt


Ik heb geprobeerd om de verschillende opties te combineren, maar dit resulteerd in een

dsget failed:De parameter is onjuist.
type dsget /? for help.


Weet iemand hoe je output kan genereren die mij de groepsnamen en de users die er in zitten kan geven? Voor de duideljikheid: een lijst met bijvoorbeeld bovenaan de groepsnaam gevolgd door de inhoud.

Ik hou me aanbevolen!

  • Abom
  • Registratie: September 2000
  • Laatst online: 17-02 09:37
Je moet 'dsget group -members' gebruiken

No offence, maar de eerste hit op google gaf me deze info al.

  • Venator
  • Registratie: April 2000
  • Laatst online: 18-02 18:38
No offense, maar lezen kan geen kwaad.

Als je het eerste commandovoorbeeld leest, dan zie je dat ik een dsquery doe welke output piped naar het zelfde commando wat jij roept. Dit is gedaan zodat niet de complete AD afgezocht wordt naar groepen (gaat lang duren hier, grote omgeving). Tevens lees je dan ook dat dit niet hetgene opleverd wat gezocht wordt.

Ondertussen nog wat verder gezocht, maar heb nog steeds geen goede oplossing gevonden... Wel er achter gekomen dat als je een enkele groep behandeld, de members wel gedumped kunnen worden inclusief de DN van de groep waar de members lid van zijn.
Doe je het echter voor alle bewuste groepen ineens, dan komt alles door elkaar te staan en weet je dus niet welke mensen lid zijn van welke groep.

Alle groepen per stuk gaan doen is geen optie hier, dus ik zoek nog steeds een manier om een output te krijgen van groepen met hun members in een redelijk overzichtelijke manier (output.txt met eventueel seperated values is genoeg).

Als het zo makkelijk was als hierboven gesteld, dan had ik de vraag natuurlijk niet gesteld :+

[ Voor 5% gewijzigd door Venator op 13-06-2006 12:26 ]


  • paulhekje
  • Registratie: Maart 2001
  • Laatst online: 25-01 15:50
voor dit soort 1 malige rapportages gebruik ik meestal excel als tussen stap ipv de |
daarmee kun je heel handig batchfiles/dsquery/dsget/dsmod opdrachten samenstellen

en overweeg ook het gebruikt van csvde, waarbij je eerst een header file maakt met alle gewenste velden.

je kunt ook andere tools overwegen zoals hyena, of een ldap browser zoals softerra

[ Voor 39% gewijzigd door paulhekje op 13-06-2006 13:30 ]

|=|=|=||=|=|=||=|=|=| http://www.vanwijck.com |=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=|


Verwijderd

Venator schreef op dinsdag 13 juni 2006 @ 12:25:
Alle groepen per stuk gaan doen is geen optie hier, dus ik zoek nog steeds een manier om een output te krijgen van groepen met hun members in een redelijk overzichtelijke manier (output.txt met eventueel seperated values is genoeg).
waarom voldoet dat niet? ok ik begrijp dat je niet 1000keer hetzelfde statement met een nieuwe groep wil geven, maar dat kan je een in een loopje zetten. eerst alle groupen zoeken en middels een loopje per group het commando uitvoeren.

  • Abom
  • Registratie: September 2000
  • Laatst online: 17-02 09:37
Mja, mijn excuses, ik heb het inderdaad niet helemaal correct gelezen.

Maar dan nog zie ik het probleem niet...je kunt het toch in stappen doen? Eerst al je groepen naar een text-file gooien en vervolgens deze door een for-loopje gooien om dsget erop los te laten.

Basic batch file skillz. Verder is Paul z'n advies nog beter, excel ftw!

[ Voor 13% gewijzigd door Abom op 13-06-2006 14:02 ]


  • Venator
  • Registratie: April 2000
  • Laatst online: 18-02 18:38
:) Bedankt voor jullie reacties, het is me gelukt:

De eerste optie (dsget etc.) ben ik maar volledig vergeten, bij een listing van de groepen krijg je niet meer ordelijk je groepsnamen terug hier (cn-names vn groepen staan kriskras door wat de output per groep zou moeten zijn in de dumpfile).

Ik ben voor cvsde gegaan en heb commando csvde -f output.csv -l member -r "(objectcategory=Group)" gebruikt. Dit bouwt een lijst op met alles DN's van de groepen met in de tweede kolom alle members van de groep. Enige wat je dan nog moet doen is in Excel de troep wegfilteren :)

In ieder geval bedankt voor julli positieve bijdragen!

  • Venator
  • Registratie: April 2000
  • Laatst online: 18-02 18:38
Toch nog een kleine kanttekening: In de geëxporteerde groepen komen ook groepen voor met de klinkende namen X'434e3d4b6xxxxxxxxxxxxx. Nu is het domein waar ik de export op doe een voormalig NT4 domein en zijn er groepen uit het oude domein gemigreerd naar volgens mij 3 nieuwe AD2000/20033 domeinen. Ik heb het vermoeden dat door de configuratie van trusts deze groepen niet resolved kunnen worden, maar ik heb mijn gedachte nog nergens bevestigd gezien. Misschien hier iemand?

  • paulhekje
  • Registratie: Maart 2001
  • Laatst online: 25-01 15:50
bij die betreffende groepen is de pre-windows 2000 naam niet ingevuld tijdens het aanmaken.
Als je bijvoorbeeld via dsadd een group toevoegd, dan krijg je random namen in dat veld behalve als je die pre-win2k naam gelijk meegeeft als attribuut.
(Je kunt dit makkelijk recht trekken met dsmod)

[ Voor 3% gewijzigd door paulhekje op 19-06-2006 09:40 ]

|=|=|=||=|=|=||=|=|=| http://www.vanwijck.com |=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=|


  • Venator
  • Registratie: April 2000
  • Laatst online: 18-02 18:38
Thnx Paul, maar DSmod werkt niet:

dsmod failed:Value for `Target object for this command' has incorrect format.

DSMod slikt dus geen groepen met klinkende namen als 63636f756e74732c4f553d4d4e2c44433d6d6e2c44433d687964726f6e2c444 :(

  • paulhekje
  • Registratie: Maart 2001
  • Laatst online: 25-01 15:50
syntax: dsmod group GroupDN -samid <SAMName>

voorbeeld: groepnaam=X342142141234123 met CN=testgroep,ou=ou1,dc=domein,dc=local

dsmod group CN=testgroep,ou=ou1,dc=domein,dc=local -samid testgroep

na deze actie is "X342142141234123" vervangen door "testgroep'

[ Voor 17% gewijzigd door paulhekje op 19-06-2006 12:51 ]

|=|=|=||=|=|=||=|=|=| http://www.vanwijck.com |=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=|


  • Venator
  • Registratie: April 2000
  • Laatst online: 18-02 18:38
Het vervelende is alleen dat ik geen CN heb. Ik heb puur een groeps ID met bijvoorbeeld 63636f756e74732c4f553d4d4e2c44433d6d6e2c44433d687964726f6e2c44433d6c6f63616c als groepsnaam, wat voortgekomen is uit een dsquery opdracht om alle aanwezige groepen binnen het domein te lijsten en uit te voeren. Overigens, als ik een net group /domain > domaingrouplist.txt doe komen deze groepen er niet in terug :S?!

Volgens mij klopt de syntax dsmod group CN=testgroep,ou=ou1,dc=domein,dc=local -samid testgroep ook niet helemaal? Als ik het zo lees zet je het samid testgroep om naar de naam testgroep?! Ik wil juist het vage id 63636f756e74732c4f553d4d4e2c44433d6d6e2c44433d687964726f6e2c44433d6c6f63616c omzetten naar een terug te vinden naam binnen de AD.

Overigens: volgens iemand anders kun je ook dit soort namen krijgen als er geen nameresolving over een trust kan plaatsvinden en het gaat om gemigreerde groepen uit een oud (bv. NT4) domein, wat hier ook het geval is.

  • paulhekje
  • Registratie: Maart 2001
  • Laatst online: 25-01 15:50
het dsmod commando zet inderdaad het samid terug naar de naam testgroep, er vanuit gaande dat dat veld de vreemde naam heeft.

wat is de exacte syntax van je dsquery waarmee je die groepen vindt?

|=|=|=||=|=|=||=|=|=| http://www.vanwijck.com |=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=|


  • Venator
  • Registratie: April 2000
  • Laatst online: 18-02 18:38
dsquery group OU=Juniors,OU=Sales
s,OU=Employees,dc=sub,dc=domein,dc=com -limit 0 | dsget group -desc
> GroupNames.txt

Zoals hierboven ook staat. Geeft de namen + descriptions van alle groepen in het actieve domein, geen spannende oefening op zich.

  • paulhekje
  • Registratie: Maart 2001
  • Laatst online: 25-01 15:50
Wat in jouw commando gebeurt is
dsquery: De DN's zoeken van alle groepen in de betreffende OU
dsget:groep description erbij zoeken
groupnames.txt: de output bevat alleen de groupdescription en niet het samid of de DN

=> er is dus een aantal groepen met in het description veld vreemde nummers.

ik zou alle groepen met hun attributen dumpen met csvde
csvde -f groups.txt -d OU=Juniors,OU=Sales,OU=Employees,dc=sub,dc=domein,dc=com -r (objectclass=group)

daarna inlezen in excel en nu zoeken in de kolom description.

|=|=|=||=|=|=||=|=|=| http://www.vanwijck.com |=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=|


  • Venator
  • Registratie: April 2000
  • Laatst online: 18-02 18:38
=> er is dus een aantal groepen met in het description veld vreemde nummers.

Nee juist niet, het zijn juist de velden die een DN horen te bevatten waar vreemde nummers in staan. Het veld waar de description hoort te staan blijft leeg.

Maar goed. Ik heb ze nu maar buiten beschouwing gelaten.
Pagina: 1