Jump to content

Telefonliste im AD pflegen - Telefonnummern von Räumen?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

ich habe hier schon einiges darüber gelesen, dass man eine firmeninterne Telefonliste im Active Directory pflegen kann. Wenn ich es richtig verstanden habe, wird die Telefonnummer einfach im AD-Benutzerkonto eingetragen und erscheint dann z.B. auch so in der Globalen Adressliste im Outlook.

 

Ich habe dazu zwei Fragen:

1. Auf unserer Telefonliste (momentan ein handgepflegtes Word-Dokument) sind viele Telefonnummern für Räume, aber auch für Abteilungen hinterlegt (z.B. EDV - Nr. 123). Kann man diese Nummern auch im AD pflegen? Ist es klug, für diese einen Benutzer anzulegen und dessen Konto auf deaktiviert zu setzen? (z.B. Benutzer Malerwerkstatt - Tel. 456). Erscheint mir etwas unelegant.

 

2. Können die Nummern auch von jemandem gepflegt werden, der kein Administrator ist (z.B. einem Technik-Mitarbeiter). Habe schon etwas über "Objektverwaltung Delegieren" gelesen. Kann man dass soweit delegieren, dass dieser Technik-Mitarbeiter nur die Felder Name, Vorname, Abteilung und Tel-Nr. ändern kann, sonst aber nix?

 

Vielen Dank für Eure Hilfe.

paumus

Link zu diesem Kommentar

Servus,

 

1. Auf unserer Telefonliste (momentan ein handgepflegtes Word-Dokument) sind viele Telefonnummern für Räume, aber auch für Abteilungen hinterlegt (z.B. EDV - Nr. 123). Kann man diese Nummern auch im AD pflegen?

 

Schau Dir doch ein Benutzerobjekt an, dann siehst Du, welche Felder bzw. Reiter Dir zur Verfügung stehen. Es könnte sein, dass das eine oder andere Feld (Attribut) nicht im globalen Katalog repliziert wird, damit man Domänenübergreifend danach suchen könnte. Das Attribut kann man aber in den meisten Fällen zusätzlich in den GC replizieren lassen.

 

Falls die Felder nicht Deinen Wünschen entsprechen, könnte man das Schema erweitern, was ich aber für dieses Vorhaben, nicht empfehlen würde. Da würde ich nach einer externen Lösung suchen.

 

Ist es klug, für diese einen Benutzer anzulegen und dessen Konto auf deaktiviert zu setzen? (z.B. Benutzer Malerwerkstatt - Tel. 456). Erscheint mir etwas unelegant.

 

Nein. Das halte ich für sehr unklug.

 

Habe schon etwas über "Objektverwaltung Delegieren" gelesen. Kann man dass soweit delegieren, dass dieser Technik-Mitarbeiter nur die Felder Name, Vorname, Abteilung und Tel-Nr. ändern kann, sonst aber nix?

 

Ja, dass kann man weitestgehend. Schau Dir dazu die "spezielle" Objektverwaltung an (siehe Link):

 

Gruppenrichtlinien - Übersicht, FAQ und Tutorials

Link zu diesem Kommentar

Vielen Dank für die Antworten!

Daim: Sehr hilfreicher Link, das werde ich mir anschauen. Vielleicht hast Du mich aber falsch verstanden mit den Raum-Telefonnummern. Die Telefonliste schaut vereinfacht etwa so aus:

Installationsraum - 203

Müller - 123

Meier - 124

Schmidt - 175

Teeküche - 207

Also die Frage ist, ob man sowas wie Teeküche anlegen kann.

 

Wie Hirgelzwift und marka sagen, kann man im AD auch einen Kontakt anlegen (probiere ich gerade). Ich glaube das ist genau das was ich suche!

 

An dieser Stelle habe ich noch eine Frage:

Könnte ein Technik-Mitarbeiter die Nummern auch bearbeiten, wenn er nicht auf einem Domänencontroller per RDP arbeitet? Habe schon gesehen, dass er mit dem Windows-Adressbuch (wab.exe) Benutzer im AD suchen und bearbeiten kann. Kann er mit diesem feinen Programm auch Kontakte erstellen / löschen? Oder gibt es noch einen anderen Weg, "von außen" Kontakte im AD zu erstellen?

Link zu diesem Kommentar

Moin,

 

Also die Frage ist, ob man sowas wie Teeküche anlegen kann.

 

Du möchtest z.B. ein Feld haben, wo steht: Teeküche?

Dazu musst Du das Schema erweitern, was ich für diesen Zweck nicht für sinnvoll halte.

Dann lieber so, wie die anderen hier bereits erwähnt haben, über die Kontakte lösen.

 

Oder gibt es noch einen anderen Weg, "von außen" Kontakte im AD zu erstellen?

 

Ja, installiere das Adminpack auf folgende Weise (auf dem Client vom Techniker), denn somit, werden nur die AD-Tools und NICHT das gesamte (unnötige) Adminpack installiert.

 

msiexec /i adminpak.msi ADDLOCAL=FeADTools /qb

Link zu diesem Kommentar
  • 2 Wochen später...

Vielen Dank für die Tipps!

Das hat mir schon sehr geholfen. Mit Hilfe des AdminPaks kann man das ActiveDirectory von "normalen" Arbeitsrechnern aus bearbeiten. Mit "Objektverwaltung delegieren" kann ich den Zugriff auf die Objekte einschränken, so dass nur noch Telefonnummern bearbeitet werden können oder nur Objekte vom Typ "Kontakt" verändern werden können. Schließlich sind die Kontakte anscheinend auch eine ganz gute Lösung für die Telefonnummern, die keinem Benutzer zugeordnet werden können. Das hört sich schonmal sehr gut an!

 

Jetzt werde ich noch schauen, ob ich mit Hilfe von vbscript und ADSI (schaue mir gerade SelfADSI : Das ADSI Scripting Tutorial an) eine klassische Telefonnummern-Liste generieren kann.

Außerdem will ich auch noch schauen, ob ich die so gepflegten Kontakte auch an einem anderen Standort unserer Firma (die eine eigene EDV mit eigenem DC und eigener Domäne hat) zur Verfügung stellen kann, eine Standleitung gibt es.

 

Grüße,

paumus

Link zu diesem Kommentar
  • 4 Wochen später...
So, ich habe das Generieren einer Telefonliste jetzt mit PHP gelöst, das per LDAP auch Informationen aus dem AD ziehen kann. Das ist wirklich eine gute Sache.

 

 

Wie wäre es, wenn Du daraus einen kleinen Artikel bastelst und hier dem Forum (Windows Server How-To Guides: Home - ServerHowTo.de) zur Verfügung stellst ?

Dadurch hätte es für jedermann einen Mehrwert ;)

Link zu diesem Kommentar

Ich habe jetzt die Seite wieder gefunden:

mittels PHP das Windows Active Directory auslesen - administrator

 

Daran habe ich mich orientiert. Mein eigenes Skript sieht so aus, ist allerdings auch noch lange nicht perfekt, sondern nur ein Ansatz:

 

<?php

// Dieses PHP-Skript durchsucht alle OUs unterhalb von

// OU=Benutzer,DC=test,DC=local und listet deren User und Kontakte auf.

// Bekannte Probleme: Skript funktioniert nicht bei verschachtelten OUs

// (OUs und Unter-OUS), sondern nur auf der ersten Ebene der OUs.

 

function vergleich($wert_a, $wert_b)
{
 // Sortierung nach dem displayname
 $a = $wert_a["displayname"];
 $b = $wert_b["displayname"];
 if ($a == $b) {
     return 0;
}
return ($a < $b) ? -1 : +1;
}

echo "<html><head>";
echo "<title>LDAP-Zugriff auf ein Active Directory</title>";
echo "</head><body>";

// Parameter für den LDAP-Zugriff
// Adresse des Domänencontrollers:
$ldap_server = "ldap://192.168.1.100";
// Konto für den Zugriff:
$auth_user = "Administrator@test.local";
$auth_pass = "admin";

// Mit Server verbinden:
if (!($connect=@ldap_connect($ldap_server))) {
die("Keine Verbindung zum Verzeichnis-Server möglich.");
}
// Diese Parameter sind nötig für den Zugriff auf ein Active Directory:
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);

// An Server binden:
if (!($bind=@ldap_bind($connect, $auth_user, $auth_pass))) {
  die("Bind fehlgeschlagen.");
}

// Zunächst alle OUs suchen und in einem Array ($OUs) speichern:
$base_dn = "OU=Benutzer,DC=test,DC=local";
$filter = "(objectClass=organizationalUnit)";
if (!($search=@ldap_search($connect,$base_dn,$filter))) {
  die("Durchsuchen des LDAP-Servers fehlgeschlagen.");
}
$info = ldap_get_entries($connect, $search);
for ($i=0; $i<$info["count"]; $i++) {
// utf8_decode dient zur korrekten Verarbeitung von Umlauten
  $aktuelleOU = utf8_decode($info[$i]["name"][0]);
  if ($aktuelleOU <> "Benutzer")
  		$OUs[$i] = $aktuelleOU;
}

// Nun für jede Organisationseinheit in $OUs alle Kontakte und User ausgeben:
foreach ($OUs as $aktuelleOU) {
$base_dn = utf8_encode("OU=".$aktuelleOU.",OU=Benutzer,DC=test,DC=local");
$filter = "(|(objectClass=contact)(objectClass=user))";
echo "<h4>" . $aktuelleOU . "</h4>";
   if (!($search=@ldap_search($connect,$base_dn,$filter))) {
        die("Durchsuchen des LDAP-Servers fehlgeschlagen.");
   }
   $anzahl = ldap_count_entries($connect,$search);
   $info = ldap_get_entries($connect, $search);

   // Nur die relevanten Teile des $info-Arrays in ein $ergebnis-Array übernehmen:
   // (Verbessert die Übersichtlichkeit)
   for ($i=0; $i<$anzahl; $i++) {
   	$ergebnis[$i]["objectclass"] 	= $info[$i]["objectclass"][3];
   	$ergebnis[$i]["displayname"] 	= utf8_decode($info[$i]["displayname"][0]);
   	$ergebnis[$i]["givenname"]	 	= utf8_decode($info[$i]["givenname"][0]);
   	$ergebnis[$i]["sn"]			 	= utf8_decode($info[$i]["sn"][0]);
   	$ergebnis[$i]["mail"]		 	= $info[$i]["mail"][0];
   	$ergebnis[$i]["telephonenumber"]= $info[$i]["telephonenumber"][0];
   }
   // Array alphabetisch sortieren, usort erwartet dazu eine Vergleichsfunktion:
   usort($ergebnis, 'vergleich');

// Array $ergebnis in einer Tabelle ausgeben:
   echo "<table border=0>";
   for ($i=0; $i<$anzahl; $i++) {
   	echo "<tr>";
       echo "<td width=200>" . $ergebnis[$i]["displayname"] . "</td>";
       if (empty($ergebnis[$i]["mail"]))
       	echo "<td width=200> - </td>";
       else
       	echo "<td width=200>" . $ergebnis[$i]["mail"] . "</td>";
       if (empty($ergebnis[$i]["telephonenumber"]))
       	echo "<td width=100> - </td>";
       else
       	echo "<td width=100>" . $ergebnis[$i]["telephonenumber"] . "</td>";
       echo "</tr>";
   }
   echo "</table>";
   echo "<br>";
   echo "</body></html>";
}

?>

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...