a oeG!@sddlZddlZddlZddlZddlTdadaeZddZ ddZ dd Z d d Z d d Z d!ddZddZiZejD] \ZZedddkreee<qddZddZddZddZddZddZed kredS)"N)*cCs`dt}t|}|dD]}td||fqddg}|D]}||}td||fqz %s: %s=%s)r pythoncom com_error verbose_levelr Class) rrrrZdetailshrmsgexcargrrrr*s    rc Csdt}t|}|d}dt|}td|t|}d}}}}|D]b}|j} | dkrpt||d}qL| dkrt||d}qL| d kr|d}qLtd | |d}qLtrtd |d td |d td |dtd |ddS)zDumps the default DSE schemarZschemaNamingContextLDAP:// Binding torZ classSchemaZattributeSchemaZ subSchemazUnknown class: Processedclassesr z sub-schema'sz unknown typesN)rrrr r rrr) r r nameobZnclassesZnattrZnsubZnunkr class_namerrr DumpSchema9s0           r-c Csd|}td||j|jfzt|jt}WntjyFd}Yn0|dur|}td||j |j fdg}| |}|D](}|j D]\}} td||j |fqq|D]} t| |dqdS)Nz z%s%s object: %sz%s RDN='%s', ObjectDN='%s'ZdistinguishedNamez%s Attribute '%s' = %sr')r r NamerADsPathZIID_IDirectoryObjectrrZGetObjectInformationZRDNZObjectDNZGetObjectAttributesZValuesZAttrName _DumpObject) r+levelprefixZdir_obinfonamesrrrtyprrrrr0\s   r0cCsDdt}t|}|d}dt|}td|t|}t|dS)z&Recursively dump the entire directory!rrr%r&N)rrrr r0)r r r*r+rrrDumpAllObjectsrs   r6ZVT_c CsRdtf}t|t}d}}}|D]}t|j}|dkrg}|jrP|d|jr`|dt |d}ddl } | j |j } tdkrtd |j|| f|d }q$|d kr|jrd } nd } tdkrtd|j| f|d }q$|dkr$t|jd} tdkrtd|j| f|d }q$td krNtd|dtd|dtd|ddS)z/Dumps the schema using an alternative techniquezLDAP://%sschemarclassAbstract Auxiliaryz, Nrz.Class: Name=%s, Flags=%s, Primary Interface=%sr'propertyz Multi-Valuedz Single-ValuedzProperty: Name=%s, %sZsyntaxzzSyntax: Name=%s, Datatype = %sr(r)Z propertiesz syntax items)rrIID_IADsContainerrlowerr r9appendr:joinZ win32com.utilutilZIIDToInterfaceNameZPrimaryInterfacerr r.Z MultiValuedvt_mapgetZOleAutoDataType) r ZschemaZnclassZnpropZnsyntaxr Z item_classitemsZdescZwin32comZiid_nameZval_typeZ data_typerrr DumpSchema2sJ               rDcCs,tdt}|D]}td|j|jfqdS)z(Dumps the GC: object (whatever that is!)zGC:zGC ob: %s (%s)N)rr<r r.r/)r+sub_obrrrDumpGCs rFcCsDdtf}t|t}|ddg|D]}td|j|jfq&dS)zDumps the local machine usersWinNT://%s,computerZUserGroupzUser/Group: %s (%s)N) local_namerr< put_Filterr r.r/)r r+rErrrDumpLocalUserss   rKcCshdtf}t|t}|dg|D]>}td|j|jf|}|D]}td|j|jfqHq$dS)zDumps the local machine groupsrGrHzGroup: %s (%s)z Group member: %s (%s)N)rIrr<rJr r.r/ZMembers)r r+rEmembersmemberrrrDumpLocalGroupss   rNcCspddl}td|jtjdtdtdtd|D]}t|jd|jq>ttdtddS) Nrz&Usage: %s [-s server ] [-v] [Test ...]z' -v : Verbose - print more informationz: -s : server - execute the tests against the named serverzwhere Test is one of::z-If not tests are specified, all tests are runr') osr r basenamesysargv__name____doc__exit)testsrPtrrrusagesrYc CsZddl}ddl}g}tD]$}t|ttkr|jr||q|tj ddd\}}|D]H\}}|dkr|ddvr|d}|a |dkrt ||d krbt da qbt |dkrtd |}nrRrSrrYrlenr rT print_exc) r\r]rWr+ZoptsargsoptrZdotestsr$rXtestrrrrasF         ra__main__)r)rrRrZwin32apiZ win32com.adsirrZGetComputerNamerIrrrrr-r0r6rA__dict__rCr*rrDrFrKrNrYrarTrrrrs4#  + ,