Logo faq-o-matic.net
Logo faq-o-matic.net

Kostenstelle in AD integrieren

von veröffentlicht am27. Februar 2007, 16:00 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Active Directory, AD: Daten bearbeiten, Scripting   Translate with Google Translate Translate EN   Die angezeigte Seite drucken
Zuletzt aktualisiert: 2. Oktober 2012

Basierend auf dem Artikel „Eigene Funktionen in die AD-Tools integrieren“ von Nils habe ich das dort vefügbare Beispiel erweitert. Zweck dieser Erweiterung ist es, das extensionAttribute3 modifzieren zu können. Im konkreten Fall wird dieses Attribut genutzt, um eine Kostenstellenzuordnung für eine Cisco-VOIP-Telefonanlage zu schaffen.

Ziel ist es, diese Kostenstelle mittels Kontextmenü direkt über das Nutzerobjekt in Active Directory modifizieren zu können. Hierzu zählt auch die Möglichkeit, einen einmal gesetzten Wert auch komplett löschen zu können.

Das folgende Skript speichert man als extension3.hta z. B. unter c:\windows\system32 ab.

Die Löschroutine löscht den gesetzten Wert ohne nochmalige Sicherheitsabfrage. Also bitte aufpassen. 😉

——– Extension3.hta —————-

  1. <HTML>
  2. <HEAD>
  3.   <TITLE></TITLE>
  4.   <HTA:APPLICATION ID=„oHTA“>
  5.   <META NAME=„author“ CONTENT=„Nils Kaczenski und Norbert Fehlauer“>
  6. </HEAD>
  7. <BODY onload=„start();“>
  8. <H2 ID=„head“></H2>
  9. <TABLE>
  10.   <TR>
  11.   <TD>Benutzer:</TD>
  12.   <TD><P ID=„anzeige“></P></TD>
  13.   </TR>
  14.   <TR>
  15.   <TD>[K]ostenstelle</TD>
  16.   <TD><input ID=„Kosten“ accesskey=„k“></TD>
  17.   </TR>
  18.   <TR>
  19.   <TD><button onclick=„eintragen();“accesskey=„e“><U>E</U>intragen</button></TD>
  20.   <TD><button onclick=„window.close();“accesskey=„s“><U>S</U>chließen</button></TD>
  21.   <TD><button onclick=„loeschen();“accesskey=„l“><U>L</U>öschen</button></TD>
  22.   </TR>
  23. </TABLE>
  24. <BR clear=„all“>
  25. <HR>
  26. <P Class=„klein“20032007 Nils Kaczenski und Norbert Fehlauer – keine Gewähr! Nutzung auf eigene Gefahr!</P>
  27. <SCRIPT language=„VBScript“>
  28. Dim rootDSE
  29. Dim objUsr
  30. dim strUserDN
  31. const ADS_PROPERTY_CLEAR = 1
  32. strAdsPath = „“
  33. strTitel = „Kostenstelle eintragen“
  34. Function auswerten()
  35.   strText = oHTA.CommandLine
  36.   ‚ CommandLine enthält, durch Blanks getrennt:
  37.   ‚ – Pfad der HTA-Datei (in Anführungsstrichen)
  38.   ‚ – LDAP-Pfad des AD-Objekts (fallweise mit Anführungsstrichen; inkl.Serverangabe)
  39.   ‚ – Objektklasse ‚ Das macht die Auswertung etwas aufwändig:
  40.   intPosUser = InStrRev(strText,“ user“)
  41.   intPosLDAP = inStr(strText, „LDAP://“)
  42.   if intPosUser <> 0 then ‚ist ein Benutzerobjekt
  43.   auswerten = mid(strText, intPosLDAP, intPosUser – intPosLDAP)
  44.   auswerten = replace(trim(auswerten),„“„“,„“)
  45.   ‚ Jetzt sind Gänsefüßchen und Leerzeichen am Anfang/Ende weg
  46.   ‚ auswertung enthält nur noch den distinguishedName,
  47.   ‚ der weiter verwendet werden kann
  48.   else
  49.   msgBox „Kein User angegeben!“
  50.   exit function
  51.   end if
  52. End Function
  53. Sub start()
  54.   ‚ Funktion:
  55.   ‚ Eingabeparameter:
  56.   ‚ Kommentar:
  57.   window.resizeTo 400,200
  58.   document.title = strTitel
  59.   arrText = auswerten
  60.   strUserDN = auswerten
  61.   if strUserDN = „“ then
  62.   document.all.anzeige.innerText = „keine Argumente“
  63.   Exit Sub
  64.   End If
  65.   Set rootDSE = GetObject(„LDAP://RootDSE“)
  66.   strDomainname = rootDSE.Get(„defaultnamingcontext“)
  67.   Set domain = GetObject(„LDAP://“ & strDomainname)
  68.   Set objUsr = GetObject(strUserDN)
  69.   strName = objUsr.get(„displayName“)
  70.   document.title = strTitel & „: „ & strSamName
  71.   On Error Resume Next
  72.   strKostenstelle = objUsr.get(„extensionAttribute3“)
  73.   if err.number <> 0 then Err.clear ‚ kein Eintrag da!
  74.   On Error Goto 0
  75.   document.all.anzeige.innerText = strName
  76.   if strKostenstelle <> „“ then document.all.Kosten.value = strKostenstelle
  77. End Sub
  78. Sub eintragen()
  79.   ‚ Funktion:
  80.   ‚ Eingabeparameter:
  81.   ‚ Kommentar:
  82.   If strUserDN = „“ Then
  83.   MsgBox „Kein User angegeben!“
  84.   Exit Sub
  85.   End If
  86.   strCheck = document.all.Kosten.value
  87.   If IsNumeric(strCheck) Then
  88.   objUsr.Put „extensionAttribute3“, strCheck
  89.   objUsr.SetInfo
  90.   MsgBox „Kostenstelle eingetragen!“, vbInformation, strTitle
  91.   window.close
  92.   Else
  93.   MsgBox „Keine Zahl angegeben: „ & strCheck, vbCritical, strTitle
  94.   End If
  95. End Sub
  96. Sub loeschen()
  97.   ‚ Funktion:
  98.   ‚ Eingabeparameter:
  99.   ‚ Kommentar:
  100.   If strUserDN = „“ Then
  101.   MsgBox „Kein User angegeben!“
  102.   Exit Sub
  103.   End If
  104.   objUsr.PutEx ADS_PROPERTY_CLEAR, „extensionAttribute3“, vbNullString
  105.   objUsr.SetInfo
  106.   MsgBox „Kostenstelle gelöscht!“, vbInformation, strTitle
  107.   window.close
  108. End Sub
  109. </SCRIPT>
  110. </BODY>
  111. </HTML>

——– Extension3.hta —————-
Mit folgendem Script wird die extension3.hta im Rechtsklickmenü verfügbar. Hierzu adminmenu.vbs ausführen. Der Wert „strValue“, der angibt, wie der Menüpunkt heißen soll, muss entsprechend angepasst werden.
——— Adminmenu.vbs ———————

  1. Set root= GetObject(„LDAP://rootDSE“)
  2. strConfig = root.Get(„configurationNamingContext“)
  3. strPath = „LDAP://cn=user-Display,cn=407,cn=DisplaySpecifiers,“ & strConfig
  4. Set obj= GetObject(strPath)
  5. strValue = „5,Kostenstelle modifizieren,Extension3.hta“
  6. arrValue = Array(strValue)
  7. obj.PutEx 3, „adminContextMenu“, arrValue
  8. obj.SetInfo
  9. msgBox „Kontextmenüeintrag hinzugefügt: „ & strValue

© 2005-2019 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!