cvoigt
Goto Top

ActiveDirektory per LotusSript in eine Notes-DB einlesen

Hallo Admins,

möchte in einer Notes-DB User-Daten (Gruppenzugehörigkeit) aus der ActiveDirektory auslesen. Wie geht dass?

Mit VB-Script bekomme ich es hin.
'Kleines Beispielscript mit Bildschirmausgabe  
'Wichtig mit cscript ausführen  
Set ado = CreateObject("ADODB.Connection")  
ado.Provider = "ADSDSOObject"  
ado.Open


strBase   =  "<LDAP://dc=.....dc=DE>;"  

strFilter = "(&(objectclass=user)(objectcategory=person));"  
strAttrs  = "name,sAMAccountName,sn,givenName,telephoneNumber,mail,FAG-UserDrives,FAG-UserPrinters,homeDrive,homeDirectory,profilePath;"  
strScope  = "subtree"  

Set objectList = ado.Execute(strBase & strFilter & strAttrs & strScope)

While Not objectList.EOF
  For Each Field in objectList.Fields
     If i=0 Then
	     strZeile = Field.Value
     Else
	     strZeile = strZeile & vbtab & Field.Value
     End If
     i = i+1
  Next
  WScript.Echo strZeile
  objectList.MoveNext
  strZeile = ""  
  i = 0
Wend
WScript.Echo "Fertig ..."  

Wscript.sleep 20*1000

Aber ich weiß nicht, wie ich es von Notes aus tun kann.
Mit "OLE Classes" habe ich bisher nicht gearbeitet.

Wer kann mir hier einen Denkanstoß geben, wie ich vorgehen muß bzw. welche Klassen ich nutzen muß und wie ich nicht Notes-Klassen (OLE Classes) einbinde.

Vielen Dank.

Content-Key: 47989

Url: https://administrator.de/contentid/47989

Printed on: April 18, 2024 at 02:04 o'clock

Member: AndreasHoster
AndreasHoster Jan 29, 2007 at 12:16:30 (UTC)
Goto Top
Aber ich weiß nicht, wie ich es von Notes aus tun kann.
Genauso wie Du es im Posting drinstehen hast:
CreateObject arbeitet in Notes nämlich identisch wie CreateObject in VBS. (wscript.echo muß man aber noch anpassen, den Rest kannst Du aber einfach so in einen LotusScript Agenten übernehmen)

Das Einzige, worauf man aufpassen muß, wenn man server-basierte Agenten nimmt:
Der Account unter dem der Server läuft, muß die benötigten Rechte haben, z.B. lesend aufs AD zugreifen dürfen.
Und die verwendeten OLE Klassen müssen auf dem Server vorhanden sein.
Member: cvoigt
cvoigt Feb 19, 2007 at 10:40:12 (UTC)
Goto Top
Funktioniert irgendwie nicht:

ich habe folgendes Script in einem Notes-Agenten stehen:
Sub Initialize
	Set objADO = CreateObject("ADODB.Connection")  
	objADO.Provider = "ADSDSOObject"  
	objADO.Open
	
	strBase   =  "<LDAP://dc=<i>[Domäne]</i>,dc=DE>;"	  
	strFilter = "(&(objectclass=user)(objectcategory=person));"  
	strAttrs  = "name,sAMAccountName,sn,givenName,telephoneNumber,mail,FAG-UserDrives,FAG-UserPrinters,homeDrive,homeDirectory,profilePath;"  
	strScope  = "subtree"  
	
	Set objectList = objADO.Execute(strBase & strFilter & strAttrs & strScope)
	
	While Not objectList.EOF
		Forall Field In objectList.Fields
			If i=0 Then
				strZeile = Field.Value
			Else
				strZeile = strZeile & Chr(10) & Field.Value
			End If
			i = i+1
		End Forall
		Print strZeile
		objectList.MoveNext
		strZeile = ""  
		i = 0
	Wend
	Print "Fertig ..."	  
End Sub

Mit Print müssten mir eigentlich die Werte in der Statuszeile angezeigt werden. Aber leider beendet das Script ohne Fehlermeldung und gibt keine Daten aus. Statt des Print sollen die Daten zukünftig in Dokumente geschrieben werden, aber solange noch nicht mal mit Print die Daten ankommen, brauche ich mich darum gar nicht erst kümmern.

Was mache ich falsch?

Danke für die Hilfe.
Member: AndreasHoster
AndreasHoster Feb 19, 2007 at 12:06:11 (UTC)
Goto Top
Ich habs mal im LotusScript-Debugger laufen lassen, das Problem ist die ForAll Schleife.
objectList.Fields wird nicht als Collection erkannt, sondern nur als Standardobjekt, deswegen geht es erst gar nicht in die ForAll Schleife.

Aber statt ForAll über alle Felder kann man die Felder einzeln abfragen:
strZeile = objectList.Fields("name") für den Namen, strZeile = objectList.Fields("sAMAccountName") etc.