Active Directory - Scripting Basics
Für den Zugriff auf ein Active Directory AD und für Modifikationen von Active Directory Objekten gibt es mehrere Schnittstellen (als DLL-Dateien implementiert), die sich einfach über Skripte ansprechen lassen.
Eine Schnittstelle für Zugriffe auf AD ist ADSI (Active Directory Service Interfaces). Über ADSI wird der Windows Script Host um Funktionen erweitert, die es ermöglichen, z.B. Objekte in einem AD zu erstellen.
Als Protokoll für Zugriffe auf ein AD wird LDAP (Lightweight Directory
Access Protocol) verwendet.
Das folgende Code Fragment zeigt, wie ein Benutzerobjekt mit einem Skript
erzeugt werden kann.
|
Set objOU = Wscript.GetObject("LDAP://OU=myOU,dc=myDomain,dc=com") |
Das Benutzerobjekt im obigen Beispiel hätte nach erfolgreicher Erzeugung innerhalb des AD den kompletten LDAP-Pfad LDAP://CN=Nachname.Vorname,OU=myOU,DC=myDomain,DC=com
Jedes AD Objekt hat einen distinguishedName (DN) - im Beispiel oben ist das "CN=Nachname.Vorname,OU=myOU,DC=myDomain,DC=com" worüber dieses Objekt in der AD Hierarchie eindeutig identifizierbar ist.
Im Attribut Common Name
(CN) steht der Namen des Objekts, der innerhalb einer Active Directory
Gesamtstruktur eindeutig sein muss.
Neben den Attributen DN und CN gibt es für jedes AD Objekt eine
Vielzahl weiterer Attribute, die im Schema definiert sind und die mit
Werten belegt werden können.
Für viele Attribute gibt es in der Management Konsole "Active
Directory Users and Computers" kein Feld, um Werte sehen oder modifizieren
zu können. Werden diese Attribute in irgendeiner Weise trotzdem benötigt,
dann kann z.B. mit einem Skript über ADSI darauf zugegriffen werden.
Der Vollständigkeit halber möchte ich die Command Line Tools
LDIFDE.exe und CSVDE.exe nicht unerwähnt lassen. Mit diesen Programmen
können sehr schnell eine große Anzahl von AD Objekten ausgelesen
bzw. modifiziert werden.
Sehr komfortabel lassen sich Active Directory Informationen mit ADSearchAdmin© auslesen.
In der Tabelle unten sind LDAP Atttribute von Benutzerobjekten und einige
zusätzliche Informationen zu den Attributen aufgelistet.
| Die Spaltenüberschriften haben in der 2. Tabelle unten folgende Bedeutung: | |
| LDAP Attribute | Der Name des Attributs. |
| ADUC Tab | Englischer Name des Reiters in der Management Konsole "Active Directory Users and Computers" wenn ein Benutzerobjekt mit Doppelklick geöffnet wird. |
| ADUC Field | Englischer Name des Feldes im Reiters der Management Konsole "Active Directory Users and Computers" |
| Type | Der Typ des Attributs. OID ist ein eindeutiger Object Identifier im Schema für diese Objekt Klasse. DN ist ein distinguishedName also ein Eintrag für ein AD Objekt DirectoryString ist ein Unicode String Integer und Large Integer (Integer8) sind Zahlenwerte |
| MultiVal | Diese Attribute können mehrere Werte enthalten. So stehen beispielsweise im Attribut MemberOf alle distinguished Names der Gruppen, in denen dieses Benutzerobjekt Mitglied ist. |
| GC | Dieses Attribut wird im Global Catalogue veröffentlicht und steht damit auf allen Domaincontrollern für Suchoperationen etc. zur Verfügung. |
| LDAP Attribute | ADUC Tab | ADUC Field | Type | MultiVal | GC |
| accountExpires | Account | Account expires | INTEGER8 | ||
| accountNameHistory | DirectoryString | true | |||
| aCSPolicyName | DirectoryString | ||||
| adminCount | INTEGER | ||||
| adminDescription | DirectoryString | ||||
| adminDisplayName | DirectoryString | ||||
| allowedAttributes | OID | true | |||
| allowedAttributesEffective | OID | true | |||
| allowedChildClasses | OID | true | |||
| allowedChildClassesEffective | OID | true | |||
| altSecurityIdentities | DirectoryString | true | true | ||
| assistant | DN | ||||
| badPasswordTime | INTEGER8 | ||||
| badPwdCount | INTEGER | ||||
| bridgeheadServerListBL | DN | true | |||
| c | Address | Country/region | DirectoryString | true | |
| canonicalName | Object | Fully qualified domain name of object | DirectoryString | true | |
| cn | DirectoryString | true | |||
| co | Address | Country/region | DirectoryString | ||
| codePage | INTEGER | ||||
| comment | DirectoryString | ||||
| company | Organization | Company | DirectoryString | ||
| controlAccessRights | OctetString | true | |||
| countryCode | Address | Country/region | INTEGER | ||
| createTimeStamp | GeneralizedTime | ||||
| dBCSPwd | OctetString | ||||
| defaultClassStore | DN | true | |||
| department | Organization | Department | DirectoryString | ||
| description | General | Description | DirectoryString | true | true |
| desktopProfile | DirectoryString | ||||
| destinationIndicator | PrintableString | true | |||
| directReports | Organization | Direct reports | DN | true | |
| displayName | General | Display name | DirectoryString | true | |
| displayNamePrintable | PrintableString | ||||
| distinguishedName | DN | true | |||
| division | DirectoryString | ||||
| dSASignature | OctetString | ||||
| dSCorePropagationData | GeneralizedTime | true | true | ||
| dynamicLDAPServer | DN | ||||
| employeeID | DirectoryString | ||||
| extensionName | DirectoryString | true | |||
| facsimileTelephoneNumber | Telephones | Fax | DirectoryString | ||
| flags | INTEGER | true | |||
| fromEntry | Boolean | true | |||
| frsComputerReferenceBL | DN | true | |||
| fRSMemberReferenceBL | DN | true | |||
| fSMORoleOwner | DN | ||||
| garbageCollPeriod | INTEGER | ||||
| generationQualifier | DirectoryString | ||||
| givenName | General | First name | DirectoryString | true | |
| groupMembershipSAM | OctetString | ||||
| groupPriority | DirectoryString | true | |||
| groupsToIgnore | DirectoryString | true | |||
| homeDirectory | Profile | Home folder: Local path/To | DirectoryString | ||
| homeDrive | Profile | Home folder: Connect | DirectoryString | ||
| homePhone | Telephones | Home | DirectoryString | true | |
| homePostalAddress | DirectoryString | ||||
| info | Telephones | Notes | DirectoryString | ||
| initials | General | Initials | DirectoryString | ||
| instanceType | INTEGER | true | |||
| internationalISDNNumber | NumericString | true | |||
| ipPhone | Telephones | IP phone | DirectoryString | true | |
| isCriticalSystemObject | Boolean | ||||
| isDeleted | Boolean | true | |||
| isPrivilegeHolder | DN | true | |||
| l | Address | City | DirectoryString | true | |
| lastKnownParent | DN | ||||
| lastLogoff | INTEGER8 | ||||
| lastLogon | INTEGER8 | ||||
| legacyExchangeDN | CaseIgnoreString | true | |||
| lmPwdHistory | OctetString | true | |||
| localeID | INTEGER | true | |||
| lockoutTime | Account | Account is locked out | INTEGER8 | ||
| logonCount | INTEGER | ||||
| logonHours | Account | Logon Hours | OctetString | ||
| logonWorkstation | OctetString | ||||
| General | DirectoryString | true | |||
| managedObjects | DN | true | |||
| manager | Organization | Manager | DN | true | |
| masteredBy | DN | true | |||
| maxStorage | INTEGER8 | ||||
| memberOf | Member Of | Member of | DN | true | |
| mhsORAddress | DirectoryString | true | |||
| middleName | DirectoryString | ||||
| mobile | Telephones | Mobile | DirectoryString | ||
| modifyTimeStamp | GeneralizedTime | ||||
| mS-DS-ConsistencyChildCount | INTEGER | ||||
| mS-DS-ConsistencyGuid | OctetString | ||||
| mS-DS-CreatorSID | OctetString | ||||
| mSMQDigests | OctetString | true | true | ||
| mSMQDigestsMig | OctetString | true | true | ||
| mSMQSignCertificates | OctetString | true | |||
| mSMQSignCertificatesMig | OctetString | true | |||
| msNPAllowDialin | Boolean | ||||
| msNPCallingStationID | IA5String | true | |||
| msNPSavedCallingStationID | IA5String | true | |||
| msRADIUSCallbackNumber | IA5String | ||||
| msRADIUSFramedIPAddress | INTEGER | ||||
| msRADIUSFramedRoute | IA5String | true | |||
| msRADIUSServiceType | INTEGER | ||||
| msRASSavedCallbackNumber | IA5String | ||||
| msRASSavedFramedIPAddress | INTEGER | ||||
| msRASSavedFramedRoute | IA5String | true | |||
| name | DirectoryString | true | |||
| netbootSCPBL | DN | ||||
| networkAddress | CaseIgnoreString | true | |||
| nonSecurityMemberBL | DN | true | |||
| ntPwdHistory | OctetString | true | |||
| nTSecurityDescriptor | Security | N/A | ObjectSecurityDescriptor | true | |
| o | DirectoryString | true | true | ||
| objectCategory | DN | true | |||
| objectClass | Object | Object class | OID | true | true |
| objectGUID | OctetString | true | |||
| objectSid | OctetString | true | |||
| objectVersion | INTEGER | ||||
| operatorCount | INTEGER | ||||
| otherFacsimileTelephoneNum | Telephones | Fax Number (Others) | DirectoryString | true | |
| otherHomePhone | Telephones | Home Phone (Others) | DirectoryString | true | |
| otherIpPhone | Telephones | IP Phone Number (Others) | DirectoryString | true | true |
| otherLoginWorkstations | DirectoryString | true | |||
| otherMailbox | DirectoryString | true | |||
| otherMobile | Telephones | Mobile Number (Others) | DirectoryString | true | |
| otherPager | Telephones | Pager Number (Others) | DirectoryString | true | |
| otherTelephone | General | Phone Number (Others) | DirectoryString | true | |
| otherWellKnownObjects | DNWithBinary | true | |||
| ou | DirectoryString | true | true | ||
| pager | Telephones | Pager | DirectoryString | ||
| partialAttributeDeletionList | OctetString | true | |||
| partialAttributeSet | OctetString | true | |||
| personalTitle | DirectoryString | ||||
| physicalDeliveryOfficeName | General | Office | DirectoryString | ||
| possibleInferiors | OID | true | |||
| postalAddress | DirectoryString | true | |||
| postalCode | Address | Zip/Postal Code | DirectoryString | ||
| postOfficeBox | Address | P.O. Box | DirectoryString | true | |
| preferredDeliveryMethod | INTEGER | true | |||
| preferredOU | DN | ||||
| primaryGroupID | Member Of | Primary group | INTEGER | true | |
| primaryInternationalISDNNumber | DirectoryString | ||||
| primaryTelexNumber | DirectoryString | ||||
| profilePath | Profile | Profile path | DirectoryString | ||
| proxiedObjectName | DNWithBinary | true | |||
| proxyAddresses | DirectoryString | true | |||
| pwdLastSet | INTEGER8 | ||||
| queryPolicyBL | DN | true | |||
| registeredAddress | OctetString | true | |||
| replPropertyMetaData | OctetString | true | |||
| replUpToDateVector | OctetString | true | |||
| repsFrom | OctetString | true | true | ||
| repsTo | OctetString | true | true | ||
| revision | INTEGER | ||||
| rid | INTEGER | ||||
| sAMAccountName | Account | User logon name (pre-Windows 2000) | DirectoryString | true | |
| sAMAccountType | INTEGER | true | |||
| scriptPath | Profile | Logon script | DirectoryString | ||
| sDRightsEffective | INTEGER | ||||
| securityIdentifier | OctetString | ||||
| seeAlso | DN | true | |||
| serverReferenceBL | DN | ||||
| servicePrincipalName | DirectoryString | true | true | ||
| showInAddressBook | DN | true | |||
| showInAdvancedViewOnly | Boolean | ||||
| sIDHistory | OctetString | true | true | ||
| siteObjectBL | DN | true | |||
| sn | General | Last name | DirectoryString | true | |
| st | Address | State/province | DirectoryString | true | |
| street | DirectoryString | true | |||
| streetAddress | Address | Street | DirectoryString | ||
| subRefs | DN | true | true | ||
| subSchemaSubEntry | DN | true | |||
| supplementalCredentials | OctetString | true | |||
| systemFlags | INTEGER | ||||
| telephoneNumber | General | Telephone number | DirectoryString | true | |
| teletexTerminalIdentifier | OctetString | true | |||
| telexNumber | OctetString | true | |||
| terminalServer | OctetString | ||||
| textEncodedORAddress | DirectoryString | ||||
| thumbnailLogo | OctetString | ||||
| thumbnailPhoto | OctetString | ||||
| title | Organization | Title | DirectoryString | ||
| tokenGroups | OctetString | true | |||
| tokenGroupsGlobalAndUniversal | OctetString | true | |||
| tokenGroupsNoGCAcceptable | OctetString | true | |||
| unicodePwd | OctetString | ||||
| url | General | Web Page Address (Others) | DirectoryString | true | |
| userAccountControl | Account | Account options | INTEGER | true | |
| userCert | OctetString | true | |||
| userCertificate | OctetString | true | true | ||
| userParameters | DirectoryString | ||||
| userPassword | OctetString | true | |||
| userPrincipalName | Account | User logon name | DirectoryString | true | |
| userSharedFolder | DirectoryString | ||||
| userSharedFolderOther | DirectoryString | true | |||
| userSMIMECertificate | OctetString | true | true | ||
| userWorkstations | Account | Log On To/Logon Workstations | DirectoryString | ||
| uSNChanged | Object | Current USN | INTEGER8 | true | |
| uSNCreated | Object | Original USN | INTEGER8 | true | |
| uSNDSALastObjRemoved | INTEGER8 | ||||
| USNIntersite | INTEGER | ||||
| uSNLastObjRem | INTEGER8 | true | |||
| uSNSource | INTEGER8 | ||||
| wbemPath | DirectoryString | true | |||
| wellKnownObjects | DNWithBinary | true | true | ||
| whenChanged | Object | Modified | GeneralizedTime | true | |
| whenCreated | Object | Created | GeneralizedTime | true | |
| wWWHomePage | General | Web page | DirectoryString | ||
Für zusätzliche Informationen zu Active Directory Schema und Klassen verweise ich auf die entsprechenden Links.
