<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>faq-o-matic.net &#187; AD: Daten bearbeiten</title>
	<atom:link href="http://www.faq-o-matic.net/kategorien/active-directory/ad-daten-ndern/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.faq-o-matic.net</link>
	<description>Das Autoren-Blog der IT-Community</description>
	<lastBuildDate>Wed, 08 Feb 2012 05:07:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>dsmove und sein best&#228;ndiger Fehler</title>
		<link>http://www.faq-o-matic.net/2010/03/18/dsmove-und-sein-bestndiger-fehler/</link>
		<comments>http://www.faq-o-matic.net/2010/03/18/dsmove-und-sein-bestndiger-fehler/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 09:29:51 +0000</pubDate>
		<dc:creator>Nils Kaczenski</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[AD: Daten bearbeiten]]></category>
		<category><![CDATA[Batch]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/2010/03/18/dsmove-und-sein-bestndiger-fehler/</guid>
		<description><![CDATA[Mit dem Kommando “dsmove” kann man seit Windows Server 2003 AD-Objekte per Kommandozeile verschieben. Anders als die anderen ds*-Tools kommt dsmove leider nicht mit dem Piping klar: Zwar kann man etwa die Ausgabe eines “dsquery”-Befehls per Pipe an dsmove weiterleiten und so nacheinander mehrere Objekte an den Befehl verf&#252;ttern – doch dsmove wird nur das [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2009/03/20/warum-muss-eine-datenbank-zum-backup-konsistent-sein/' rel='bookmark' title='Warum muss eine Datenbank zum Backup konsistent sein?'>Warum muss eine Datenbank zum Backup konsistent sein?</a> <small>Aus einer Diskussion: Ein Berater ist der Ansicht, ein sog....</small></li>
<li><a href='http://www.faq-o-matic.net/2006/11/29/active-directory-massenoperationen-mit-admod-und-adfind/' rel='bookmark' title='Active-Directory-Massenoperationen mit AdMod und AdFind'>Active-Directory-Massenoperationen mit AdMod und AdFind</a> <small>Windows Server 2003 enth&auml;lt die so genannten &quot;ds*-Tools&quot;: Eine Sammlung...</small></li>
<li><a href='http://www.faq-o-matic.net/2009/08/05/rtselhafter-fehler/' rel='bookmark' title='R&auml;tselhafter Fehler'>R&auml;tselhafter Fehler</a> <small>Ich wollte eine Software installieren, es handelte dsich dabei um...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://vg02.met.vgwort.de/na/7b5f21e8383046ef9daad9b9fe7eee17" width="1" height="1" alt="" align="left" />Mit dem Kommando “dsmove” kann man seit Windows Server 2003 AD-Objekte per Kommandozeile verschieben. Anders als die anderen ds*-Tools kommt dsmove leider nicht mit dem Piping klar: Zwar kann man etwa die Ausgabe eines “dsquery”-Befehls per Pipe an dsmove weiterleiten und so nacheinander mehrere Objekte an den Befehl verf&uuml;ttern – doch dsmove wird nur das erste &uuml;bergebene Objekt verschieben und danach einen Fehler ausgeben. Leider gilt das auch noch in Windows Server 2008 R2.</p>
<p> <span id="more-2185"></span>
<p>M&ouml;chte man eine Massenverschiebung ausf&uuml;hren, so muss man sich mit folgendem Trick behelfen. Das Kommando verschiebt alle Objekte, deren Anmeldename mit “A” beginnt, in eine andere OU. Achtung, die “for”-Zeile bis zur zweiten &ouml;ffnenden Klammer ist eine einzige Zeile.</p>
<ol>
<li><font face="Courier New">for /f &quot;delims=&quot; %%a in (&#039;dsquery user &quot;OU=AlteOU,DC=dom,DC=faq-o-matic,DC=net&quot; -samid a* -limit 0&#039;) do ( </font></li>
<li><font face="Courier New">&#160; dsmove %%a -newparent &quot;OU=NeueOU,OU=DC=dom,DC=faq-o-matic,DC=net&quot; </font></li>
<li><font face="Courier New">)</font> </li>
</ol>
<p>Diese Syntax gilt bei Ausf&uuml;hrung per Batch – direkt auf der Kommandozeile muss man “%%a” in “%a” &auml;ndern. M&ouml;chte man das zun&auml;chst gefahrlos testen, so f&uuml;gt man vor dem “dsmove” noch das Kommando “ECHO” ein und leitet die Ausgabe in eine Datei um. Dann wird dsmove nicht aktiv, sondern das Kommando erzeugt nur die Kommandos.</p>
<p>Achtung: Auch mit Umlauten kommt diese Technik nur unter bestimmten Umst&auml;nden klar, n&auml;mlich dann, wenn die Codepage des CMD-Fensters auf 850 steht. Das ist zwar normalerweise der Fall, aber um sicherzugehen, sollte man in einem Batch zu Beginn das Kommando “chcp 850” einf&uuml;gen. Die Schalter “uc/uci/uco” der ds*-Tools helfen nicht, weil sie keine g&uuml;ltigen Daten weitergeben.</p>
<p>(Hier noch der Verweis auf meine Fundstelle – wie immer bei ExpertsExchange ganz nach unten scrollen:   <br /><a title="http://www.experts-exchange.com/Programming/Languages/Scripting/Shell/Batch/Q_22997808.html" href="http://www.experts-exchange.com/Programming/Languages/Scripting/Shell/Batch/Q_22997808.html">http://www.experts-exchange.com/Programming/Languages/Scripting/Shell/Batch/Q_22997808.html</a>)</p>
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2009/03/20/warum-muss-eine-datenbank-zum-backup-konsistent-sein/' rel='bookmark' title='Warum muss eine Datenbank zum Backup konsistent sein?'>Warum muss eine Datenbank zum Backup konsistent sein?</a> <br /><small>Aus einer Diskussion: Ein Berater ist der Ansicht, ein sog....</small></li>
<li><a href='http://www.faq-o-matic.net/2006/11/29/active-directory-massenoperationen-mit-admod-und-adfind/' rel='bookmark' title='Active-Directory-Massenoperationen mit AdMod und AdFind'>Active-Directory-Massenoperationen mit AdMod und AdFind</a> <br /><small>Windows Server 2003 enth&auml;lt die so genannten &quot;ds*-Tools&quot;: Eine Sammlung...</small></li>
<li><a href='http://www.faq-o-matic.net/2009/08/05/rtselhafter-fehler/' rel='bookmark' title='R&auml;tselhafter Fehler'>R&auml;tselhafter Fehler</a> <br /><small>Ich wollte eine Software installieren, es handelte dsich dabei um...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2010/03/18/dsmove-und-sein-bestndiger-fehler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>dsacls in Extremsituation</title>
		<link>http://www.faq-o-matic.net/2010/03/11/dsacls-in-extremsituation/</link>
		<comments>http://www.faq-o-matic.net/2010/03/11/dsacls-in-extremsituation/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 16:33:04 +0000</pubDate>
		<dc:creator>Nils Kaczenski</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[AD: Daten bearbeiten]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/2010/03/11/dsacls-in-extremsituation/</guid>
		<description><![CDATA[dsacls.exe ist das Kommandozeilenwerkzeug, mit dem man Berechtigungen auf Objekte in Active Directory manipulieren kann. Heute hatte ich Gelegenheit, es in einer Extremsituation zu nutzen. In einem Testszenario sollten f&#252;r 16.308 Benutzerkonten die AD-Zugriffsberechtigungen ge&#228;ndert werden. F&#252;r jedes einzelne Objekt gab es sieben &#196;nderungen: Zwei vorhandene Berechtigungen wurden entfernt und f&#252;nf neue hinzugef&#252;gt. Das Ganze [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2010/05/25/dsacls-ergebnis-im-skript-effizient-prfen/' rel='bookmark' title='dsacls-Ergebnis im Skript effizient pr&uuml;fen'>dsacls-Ergebnis im Skript effizient pr&uuml;fen</a> <small>dsacls ist das Kommandozeilenprogramm, mit dem man in Active Directory...</small></li>
<li><a href='http://www.faq-o-matic.net/2010/05/21/objekt-vor-zuflligem-lschen-schtzen-per-skript-setzen/' rel='bookmark' title='&ldquo;Objekt vor zuf&auml;lligem L&ouml;schen sch&uuml;tzen&rdquo; per Skript setzen'>&ldquo;Objekt vor zuf&auml;lligem L&ouml;schen sch&uuml;tzen&rdquo; per Skript setzen</a> <small>Seit Windows Server 2008 gibt es eine neue Option beim...</small></li>
<li><a href='http://www.faq-o-matic.net/2008/06/23/ad-adressen-im-sekretariat-bearbeiten-lassen/' rel='bookmark' title='AD-Adressen im Sekretariat bearbeiten lassen'>AD-Adressen im Sekretariat bearbeiten lassen</a> <small>Active Directory ist in vielen Unternehmen die zentrale Adressdatenbank f&uuml;r...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>dsacls.exe ist das Kommandozeilenwerkzeug, mit dem man Berechtigungen auf Objekte in Active Directory manipulieren kann. Heute hatte ich Gelegenheit, es in einer Extremsituation zu nutzen.</p>
<p>In einem Testszenario sollten f&uuml;r 16.308 Benutzerkonten die AD-Zugriffsberechtigungen ge&auml;ndert werden. F&uuml;r jedes einzelne Objekt gab es sieben &Auml;nderungen: Zwei vorhandene Berechtigungen wurden entfernt und f&uuml;nf neue hinzugef&uuml;gt. Das Ganze wurde &uuml;ber eine gro&szlig;e Batchdatei gesteuert, die f&uuml;r jedes der Objekte die sieben dsacls-Kommandos ausf&uuml;hrte. Das passierte auf einem Dom&auml;nencontroller unter Windows Server 2008 R2, der in einer nicht optimierten VM lief (nur 512 MB RAM und eine einzige virtuelle Festplatte).</p>
<p>Der Vorgang dauerte etwas weniger als zwei Stunden. Erst war ich &uuml;berrascht &uuml;ber die lange Bearbeitungszeit, aber dann habe ich mal nachgerechnet:</p>
<ul>
<li>16.308 Objekte mit jeweils sieben ACL-&Auml;nderungen ergibt 114.156 einzelne ACL-&Auml;nderungen.</li>
<li>Die Ausf&uuml;hrung dauerte etwas weniger als zwei Stunden, was etwa 1000 ACL-&Auml;nderungen pro Minute ergibt.</li>
<li>Das wiederum bedeutet, dass etwas mehr als 15 &Auml;nderungen pro Sekunde erfolgten.</li>
<li>Hierbei muss man – neben dem geringen Arbeitsspeicher des Servers – ber&uuml;cksichtigen, dass jede &Auml;nderung im Ereignisprotokoll mitgeschrieben wurde und dass dsacls bei jeder Ausf&uuml;hrung die Berechtigungen des Objekts als Text ausgibt, hier umgeleitet in eine Datei.</li>
<li>Die Datenbank-Dateigr&ouml;&szlig;e des AD &auml;nderte sich durch diesen Vorgang &uuml;brigens nicht, was wahrscheinlich auf die pro Objekt geringe Anzahl ge&auml;nderter ACLs zur&uuml;ckzuf&uuml;hren ist.</li>
</ul>
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2010/05/25/dsacls-ergebnis-im-skript-effizient-prfen/' rel='bookmark' title='dsacls-Ergebnis im Skript effizient pr&uuml;fen'>dsacls-Ergebnis im Skript effizient pr&uuml;fen</a> <br /><small>dsacls ist das Kommandozeilenprogramm, mit dem man in Active Directory...</small></li>
<li><a href='http://www.faq-o-matic.net/2010/05/21/objekt-vor-zuflligem-lschen-schtzen-per-skript-setzen/' rel='bookmark' title='&ldquo;Objekt vor zuf&auml;lligem L&ouml;schen sch&uuml;tzen&rdquo; per Skript setzen'>&ldquo;Objekt vor zuf&auml;lligem L&ouml;schen sch&uuml;tzen&rdquo; per Skript setzen</a> <br /><small>Seit Windows Server 2008 gibt es eine neue Option beim...</small></li>
<li><a href='http://www.faq-o-matic.net/2008/06/23/ad-adressen-im-sekretariat-bearbeiten-lassen/' rel='bookmark' title='AD-Adressen im Sekretariat bearbeiten lassen'>AD-Adressen im Sekretariat bearbeiten lassen</a> <br /><small>Active Directory ist in vielen Unternehmen die zentrale Adressdatenbank f&uuml;r...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2010/03/11/dsacls-in-extremsituation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8222;Benutzer kann Passwort nicht &#228;ndern&#8220;-Option auf Abwegen</title>
		<link>http://www.faq-o-matic.net/2009/03/25/benutzer-kann-passwort-nicht-ndern-option-auf-abwegen/</link>
		<comments>http://www.faq-o-matic.net/2009/03/25/benutzer-kann-passwort-nicht-ndern-option-auf-abwegen/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 10:35:30 +0000</pubDate>
		<dc:creator>Florian Frommherz</dc:creator>
				<category><![CDATA[AD: Daten bearbeiten]]></category>
		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/2009/03/25/benutzer-kann-passwort-nicht-ndern-option-auf-abwegen/</guid>
		<description><![CDATA[Neulich rief ein Kollege bei mir an und berichtete mir, dass einige Benutzer ihre Dom&#228;nenpassw&#246;rter nicht mehr &#228;ndern konnten. Sie erhielten folgende Fehlermeldung: Da es in den Benutzerkontenoptionen eine Checkbox namens „Benutzer kann Passwort nicht &#228;ndern“ gibt, die ein Ver&#228;ndern des Benutzerpasswords durch den Benutzer selbst verhindert, schloss ich darauf, dass das Problem dort liegen [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2005/01/03/warum-kann-ein-benutzer-dateien-aendern-fuer-die-er-keine-rechte-hat/' rel='bookmark' title='Warum kann ein Benutzer Dateien &#228;ndern, f&#252;r die er keine Rechte hat?'>Warum kann ein Benutzer Dateien &#228;ndern, f&#252;r die er keine Rechte hat?</a> <small>Benutzer k&ouml;nnen Dateien l&ouml;schen, auf die sie keinen Zugriff haben....</small></li>
<li><a href='http://www.faq-o-matic.net/2002/09/09/wie-kann-ich-den-pfad-zum-home-folder-mehrerer-benutzer-aendern/' rel='bookmark' title='Wie kann ich den Pfad zum Home-Folder mehrerer Benutzer (oder auch andere Werte) &#228;ndern?'>Wie kann ich den Pfad zum Home-Folder mehrerer Benutzer (oder auch andere Werte) &#228;ndern?</a> <small>Unter Windows 2000&nbsp;war es leider nicht m&ouml;glich, bei mehreren Objekten...</small></li>
<li><a href='http://www.faq-o-matic.net/2003/11/17/wie-kann-ich-die-terminal-server-einstellungen-im-ad-veraendern/' rel='bookmark' title='Wie kann ich die Terminal-Server-Einstellungen im AD ver&#228;ndern?'>Wie kann ich die Terminal-Server-Einstellungen im AD ver&#228;ndern?</a> <small>Wie so oft, muss auch beim Bearbeiten der Terminal-Server-Attribute in...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Neulich rief ein Kollege bei mir an und berichtete mir, dass einige Benutzer ihre Dom&auml;nenpassw&ouml;rter nicht mehr &auml;ndern konnten. Sie erhielten folgende Fehlermeldung:</p>
<p><a href="http://www.faq-o-matic.net/wp-content/uploads/2009/03/image2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.faq-o-matic.net/wp-content/uploads/2009/03/image-thumb2.png" width="244" height="135" /></a> </p>
<p>Da es in den Benutzerkontenoptionen eine Checkbox namens „Benutzer kann Passwort nicht &auml;ndern“ gibt, die ein Ver&auml;ndern des Benutzerpasswords durch den Benutzer selbst verhindert, schloss ich darauf, dass das Problem dort liegen k&ouml;nnte. Doch die Checkbox war nicht aktiviert, wie mir mein Kollege versicherte.</p>
<p> <span id="more-1222"></span>
<p><a href="http://www.faq-o-matic.net/wp-content/uploads/2009/03/image3.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.faq-o-matic.net/wp-content/uploads/2009/03/image-thumb3.png" width="202" height="244" /></a> </p>
<p>Obwohl wir beide etwas ratlos waren, fand mein Kollege zumindest einen Workaround f&uuml;r das Problem: er aktivierte die Checkbox „Benutzer kann Passwort nicht &auml;ndern“, &uuml;bernahm die &Auml;nderung am Benutzerkonto, l&ouml;schte die Checkbox wieder und &uuml;bernahm die &Auml;nderung erneut. Das half ihm sicherzustellen, dass die Benutzer ihre Passworte wieder &auml;ndern konnten.</p>
<p>Da das sicherlich kein Dauerzustand sein konnte und wir den wahren Grund f&uuml;r das Problem herausfinden wollten, haben wir uns weiterhin bem&uuml;ht, die Ursache des Problems zu finden. Wir sprachen &uuml;ber m&ouml;gliche Faktoren, die das Problem h&auml;tten hervorrufen k&ouml;nnen und nahmen uns einige Skripte zur Brust, die zur Verwaltung und Provisionierung von Benutzern verwandt wurden. In der Tat wurden wir f&uuml;ndig: der Kunde setzte ein Skript ein, das Benutzerkonten f&uuml;r Kurzzeitmitarbeiter anlegte. Hierbei wurde ein festes Passwort vergeben, das nach dem maximalen Kennwortalter, das in der Passwortrichtlinie vorgegeben ist, abl&auml;uft. Die Benutzer m&uuml;ssen dann zu ihrem Manager und das Passwort entweder verl&auml;ngern lassen oder die Firma verlassen <img src='http://www.faq-o-matic.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Zugegeben, diese Methode ist nicht gerade die Beste, zumal es ja die „Konto l&auml;uft ab:“-Option in den Konteneinstellungen gibt und extra hierf&uuml;r entwickelt wurde.</p>
<p>Das eigentliche Problem war folgendes: das Skript machte keine gute Arbeit beim Verbieten der Kennwort&auml;nderung durch den Benutzer, denn es l&ouml;schte einfach zwei Standardberechtigungen aus der Berechtigungsliste des Benutzerobjektes:</p>
<p><a href="http://www.faq-o-matic.net/wp-content/uploads/2009/03/image4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.faq-o-matic.net/wp-content/uploads/2009/03/image-thumb4.png" width="244" height="185" /></a> </p>
<p>Das scheint erst mal kein Problem zu sein, denn schlie&szlig;lich tut das Skript das, f&uuml;r was es bezahlt wird. Schlecht nur, dass „Active Directory Benutzer und Computer“ diese Methode nicht kennt und dementsprechend auch die Checkbox zu „Benutzer kann Kennwort nicht &auml;ndern“ anzeigt. Was „Active Directory Benutzer und Computer“ erwartet – und was es selbst auch ver&auml;ndert, wenn die Checkbox aktiviert wird – ist, dass das Recht „Change Password“ f&uuml;r die „Jeder“ (Everyone) und „Selbst“ (Self)-Autorit&auml;ten verweigert wird. Diese beiden Eintr&auml;ge werden zur Berechtigungsliste hinzugef&uuml;gt und – sollte die Checkbox wieder gel&ouml;scht werden, entfernt. Zus&auml;tzlich zum Entfernen der „verweigern“-Berechtigungen werden die im Bild markierten Berechtigungen „Change Password“ f&uuml;r „Jeder“ und „Selbst“ zur Liste hinzugef&uuml;gt. Das ist auch der Grund, warum der Workaround meines Kollegen funktioniert hat.</p>
<p>Und die Moral von der Geschicht? Wenn du wilde Skripte schreiben m&ouml;chtest, schau doch mal nach, ob’s die Funktionalit&auml;t nicht schon fertig gibt. Falls es sie schon fertig gibt, schau doch auch gleich noch nach, wie die Fertigl&ouml;sung „hinter den Kulissen“ funktioniert – das erspart &Auml;rger mit der Checkbox.</p>
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2005/01/03/warum-kann-ein-benutzer-dateien-aendern-fuer-die-er-keine-rechte-hat/' rel='bookmark' title='Warum kann ein Benutzer Dateien &#228;ndern, f&#252;r die er keine Rechte hat?'>Warum kann ein Benutzer Dateien &#228;ndern, f&#252;r die er keine Rechte hat?</a> <br /><small>Benutzer k&ouml;nnen Dateien l&ouml;schen, auf die sie keinen Zugriff haben....</small></li>
<li><a href='http://www.faq-o-matic.net/2002/09/09/wie-kann-ich-den-pfad-zum-home-folder-mehrerer-benutzer-aendern/' rel='bookmark' title='Wie kann ich den Pfad zum Home-Folder mehrerer Benutzer (oder auch andere Werte) &#228;ndern?'>Wie kann ich den Pfad zum Home-Folder mehrerer Benutzer (oder auch andere Werte) &#228;ndern?</a> <br /><small>Unter Windows 2000&nbsp;war es leider nicht m&ouml;glich, bei mehreren Objekten...</small></li>
<li><a href='http://www.faq-o-matic.net/2003/11/17/wie-kann-ich-die-terminal-server-einstellungen-im-ad-veraendern/' rel='bookmark' title='Wie kann ich die Terminal-Server-Einstellungen im AD ver&#228;ndern?'>Wie kann ich die Terminal-Server-Einstellungen im AD ver&#228;ndern?</a> <br /><small>Wie so oft, muss auch beim Bearbeiten der Terminal-Server-Attribute in...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2009/03/25/benutzer-kann-passwort-nicht-ndern-option-auf-abwegen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Umbenennen einer AD-Dom&#228;ne</title>
		<link>http://www.faq-o-matic.net/2008/09/02/umbenennen-einer-ad-domaene/</link>
		<comments>http://www.faq-o-matic.net/2008/09/02/umbenennen-einer-ad-domaene/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 06:30:05 +0000</pubDate>
		<dc:creator>Mark Heitbrink</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[AD: Daten bearbeiten]]></category>
		<category><![CDATA[Whitepapers]]></category>
		<category><![CDATA[Windows Server 2003]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/?p=925</guid>
		<description><![CDATA[rendom.exe: Umbenennen einer Dom&#228;ne &#8211; Schritt f&#252;r Schritt. Dieses PDF-Dokument beschreibt den Idealfall einer Dom&#228;nen-Umbenennung in Active Directory. Verwandte Beitr&auml;ge: Kann ich eine Dom&#228;ne oder einen DC umbenennen? Das Umbenennen einer Dom&#228;ne oder eines Dom&#228;nencontrollers wurde zwischen Windows... Wie kann man einen Dom&#228;nencontroller unter Windows Server 2003 umbenennen? Wenn man einen Dom&#228;nencontroller umbenennen muss, so kann [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2003/03/09/kann-ich-eine-domaene-oder-einen-dc-umbenennen/' rel='bookmark' title='Kann ich eine Dom&#228;ne oder einen DC umbenennen?'>Kann ich eine Dom&#228;ne oder einen DC umbenennen?</a> <small>Das Umbenennen einer Dom&auml;ne oder eines Dom&auml;nencontrollers wurde zwischen Windows...</small></li>
<li><a href='http://www.faq-o-matic.net/2006/05/28/wie-kann-man-einen-domaenencontroller-unter-windows-server-2003-umbenennen/' rel='bookmark' title='Wie kann man einen Dom&#228;nencontroller unter Windows Server 2003 umbenennen?'>Wie kann man einen Dom&#228;nencontroller unter Windows Server 2003 umbenennen?</a> <small>Wenn man einen Dom&auml;nencontroller umbenennen muss, so kann man das...</small></li>
<li><a href='http://www.faq-o-matic.net/2008/01/19/viele-dateien-auf-einmal-umbenennen/' rel='bookmark' title='Viele Dateien auf einmal umbenennen'>Viele Dateien auf einmal umbenennen</a> <small>Problem Es kommt oft vor, dass man eine grosse Anzahl...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>rendom.exe: Umbenennen einer Dom&auml;ne &#8211; Schritt f&uuml;r Schritt. Dieses PDF-Dokument beschreibt den Idealfall einer Dom&auml;nen-Umbenennung in Active Directory.</p>
Note: There is a file embedded within this post, please visit this post to download the file.
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2003/03/09/kann-ich-eine-domaene-oder-einen-dc-umbenennen/' rel='bookmark' title='Kann ich eine Dom&#228;ne oder einen DC umbenennen?'>Kann ich eine Dom&#228;ne oder einen DC umbenennen?</a> <br /><small>Das Umbenennen einer Dom&auml;ne oder eines Dom&auml;nencontrollers wurde zwischen Windows...</small></li>
<li><a href='http://www.faq-o-matic.net/2006/05/28/wie-kann-man-einen-domaenencontroller-unter-windows-server-2003-umbenennen/' rel='bookmark' title='Wie kann man einen Dom&#228;nencontroller unter Windows Server 2003 umbenennen?'>Wie kann man einen Dom&#228;nencontroller unter Windows Server 2003 umbenennen?</a> <br /><small>Wenn man einen Dom&auml;nencontroller umbenennen muss, so kann man das...</small></li>
<li><a href='http://www.faq-o-matic.net/2008/01/19/viele-dateien-auf-einmal-umbenennen/' rel='bookmark' title='Viele Dateien auf einmal umbenennen'>Viele Dateien auf einmal umbenennen</a> <br /><small>Problem Es kommt oft vor, dass man eine grosse Anzahl...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2008/09/02/umbenennen-einer-ad-domaene/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AD-Adressen im Sekretariat bearbeiten lassen</title>
		<link>http://www.faq-o-matic.net/2008/06/23/ad-adressen-im-sekretariat-bearbeiten-lassen/</link>
		<comments>http://www.faq-o-matic.net/2008/06/23/ad-adressen-im-sekretariat-bearbeiten-lassen/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 09:14:56 +0000</pubDate>
		<dc:creator>Nils Kaczenski</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[AD: Daten bearbeiten]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[VBScript]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/2008/06/25/ad-adressen-im-sekretariat-bearbeiten-lassen/</guid>
		<description><![CDATA[Active Directory ist in vielen Unternehmen die zentrale Adressdatenbank f&#252;r alle Mitarbeiterinnen und Mitarbeiter &#8211; vor allem, wenn Exchange eingesetzt wird. Dadurch tritt aber schnell ein Rollenkonflikt auf: &#196;nderungsrechte im AD hat meist nur die IT-Abteilung. Die Pflege der internen Adressdaten ist aber in den meisten Firmen eigentlich eine Aufgabe der Personalabteilung oder des Sekretariats. [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2005/02/02/bearbeiten-von-mailboxattributen-mit-admodify/' rel='bookmark' title='Bearbeiten von Mailboxattributen mit Admodify'>Bearbeiten von Mailboxattributen mit Admodify</a> <small>ADModify (siehe unseren &Uuml;berblicksartikel) kann auch Exchange-Attribute im AD bearbeiten....</small></li>
<li><a href='http://www.faq-o-matic.net/2010/03/11/dsacls-in-extremsituation/' rel='bookmark' title='dsacls in Extremsituation'>dsacls in Extremsituation</a> <small>dsacls.exe ist das Kommandozeilenwerkzeug, mit dem man Berechtigungen auf Objekte...</small></li>
<li><a href='http://www.faq-o-matic.net/2010/05/21/objekt-vor-zuflligem-lschen-schtzen-per-skript-setzen/' rel='bookmark' title='&ldquo;Objekt vor zuf&auml;lligem L&ouml;schen sch&uuml;tzen&rdquo; per Skript setzen'>&ldquo;Objekt vor zuf&auml;lligem L&ouml;schen sch&uuml;tzen&rdquo; per Skript setzen</a> <small>Seit Windows Server 2008 gibt es eine neue Option beim...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://vg08.met.vgwort.de/na/18c306c978224bde8390f9511a9af33b" width="1" height="1" alt="" align="left" />Active Directory ist in vielen Unternehmen die zentrale Adressdatenbank f&uuml;r alle Mitarbeiterinnen und Mitarbeiter &#8211; vor allem, wenn Exchange eingesetzt wird. Dadurch tritt aber schnell ein Rollenkonflikt auf: &Auml;nderungsrechte im AD hat meist nur die IT-Abteilung. Die Pflege der internen Adressdaten ist aber in den meisten Firmen eigentlich eine Aufgabe der Personalabteilung oder des Sekretariats.</p>
<p>Kein Problem &#8211; schlie&szlig;lich kennt Active Directory ein sehr umfassendes Berechtigungskonzept. Schnell den zust&auml;ndigen Mitarbeitern die n&ouml;tigen Rechte gegeben, und schon ist der Admin die l&auml;stige Adresspflege los.</p>
<p>Kein Problem? Doch. Denn ganz so einfach ist es meist nicht. Zun&auml;chst einmal m&uuml;ssen die n&ouml;tigen Berechtigungen &uuml;berhaupt identifiziert werden. Dann muss man sie zuweisen. Und schlie&szlig;lich ben&ouml;tigt die Personalabteilung, das Sekretariat oder wer eben zust&auml;ndig sein soll, eine passende Eingabem&ouml;glichkeit zur Pflege der Daten. Gut, also frisch ans Werk!</p>
<p><span id="more-834"></span></p>
<h3>Schritt 1: Datenfelder identifizieren</h3>
<p>Die eigentliche Identifikation, welche Daten denn bearbeitet werden sollen, kann nur innerhalb der jeweiligen Firma vorgenommen werden, idealerweise von den Personen selbst, die die Daten pflegen m&uuml;ssen (bzw. die die Verantwortung daf&uuml;r tragen). Die Zuordnung, welche Felder bzw. Attribute in Active Directory dahinter stehen, geschieht dann wiederum durch die IT-Abteilung. Es gibt eine ganze Reihe von &Uuml;bersichten, welche Eintr&auml;ge in den Verwaltungsprogrammen oder in Outlook von Active Directory mit welchen Namen angesprochen werden. Hier eine Auswahl:</p>
<p>[faq-o-matic.net » Active Directory: LDAP-Feldnamen]<br />
<a href="http://www.faq-o-matic.net/2002/09/21/active-directory-ldap-feldnamen/">http://www.faq-o-matic.net/2002/09/21/active-directory-ldap-feldnamen/</a></p>
<p>[MSXFAQ.DE - AD LDAPFelder]<br />
<a href="http://www.msxfaq.de/code/adfelder.htm">http://www.msxfaq.de/code/adfelder.htm</a></p>
<p>[SelfADSI : Attribute f&uuml;r ADS User]<br />
<a href="http://www.selfadsi.de/attadus.htm">http://www.selfadsi.de/attadus.htm</a></p>
<h3>Schritt 2: Berechtigungen setzen</h3>
<p>Berechtigungen sollten in Active Directory m&ouml;glichst sparsam gesetzt werden: Jeder Berechtigungseintrag wird in der AD-Datenbank gespeichert und mit ihr repliziert. Unn&ouml;tige Eintr&auml;ge verursachen also unn&ouml;tige Last. Umgekehrt sollten Berechtigungen nat&uuml;rlich m&ouml;glichst gezielt erteilt werden nach dem Prinzip &#034;Least Privilege&#034; &#8211; also nur das erlauben, was wirklich ben&ouml;tigt wird.</p>
<p>In Produktionsumgebungen hat es sich bew&auml;hrt, AD-Berechtigungen mit dem Kommandozeilenwerkzeug <em>dsacls.exe</em> zu setzen. Dies kann per Skript geschehen &#8211; was den unsch&auml;tzbaren Vorteil birgt, dass das Skript gleichzeitig eine hervorragende Dokumentation ist. Zudem kann so ein Skript zun&auml;chst in einem Testlabor entwickelt und gepr&uuml;ft werden, bevor man dann die fertige Fassung auf das Produktionsnetzwerk losl&auml;sst &#8211; das geht mit grafischen Tools nat&uuml;rlich nicht.</p>
<p><em>dsacls.exe</em> ist in Windows Server 2008 enthalten. In &auml;lteren Windows-Versionen kann es mit den <em>Support Tools</em> nachger&uuml;stet werden. Ein Ausschnitt aus einem <em>dsacls</em>-Skript, das gezielt Berechtigungen auf der Attributebene erteilt, folgt hier:</p>
<pre>@echo off
set OURoot="OU=Vertrieb,OU=Benutzer,DC=ad2008,DC=faq-o-matic,DC=net"
set GROUP=AD2008\Adressbearbeitung
set PERM=RPWP 

dsacls %OURoot% /I:S /G %GROUP%:%PERM%;displayName;user
dsacls %OURoot% /I:S /G %GROUP%:%PERM%;givenName;user
dsacls %OURoot% /I:S /G %GROUP%:%PERM%;sn;user
dsacls %OURoot% /I:S /G %GROUP%:%PERM%;telephoneNumber;user</pre>
<p>Zun&auml;chst definiert das Skript drei Variablen, damit der folgende Aufbau m&ouml;glichst flexibel bleibt. Die erste ist die Basis-OU: Meist sollen Berechtigungen f&uuml;r alle Objekte unterhalb eines bestimmten AD-Astes erteilt werden &#8211; hier ist das die OU <em>&#034;Benutzer/Vertrieb&#034;</em> in der eigenen Dom&auml;ne. Als zweites wird die Gruppe definiert, die die Berechtigungen erhalten soll (hier: <em>Adressbearbeitung</em>). Als drittes folgt dann ein K&uuml;rzel f&uuml;r die Berechtigung, die erteilt werden soll: <em>RPWP</em> steht f&uuml;r &#034;Read Property, Write Property&#034;, also Lese- und Schreibrechte f&uuml;r ein einzelnes Attribut. Durch diese Vordefinition l&auml;sst sich das Skript sp&auml;ter leicht anpassen.</p>
<p>Die eigentlichen <em>dsacls</em>-Kommandos erfolgen dann einzeln f&uuml;r jedes Attribut und nutzen die vorher definierten Variablen. Als erstes erwartet <em>dsacls</em> die Angabe des Objekts, das zu bearbeiten ist (hier in der Variablen <em>%OURoot%</em> abgelegt, also konkret die OU <em>&#034;Benutzer/Vertrieb&#034;</em>). Danach steht mit dem Parameter <em>/I</em> die Angabe der Vererbung; <em>&#034;S&#034;</em> steht f&uuml;r &#034;Subobjects&#034;, die Berechtigungen werden also nur auf untergeordnete Objekte vergeben, nicht aber auf die OU selbst. Mit <em>/G</em> gibt man dann die zu erteilende (G f&uuml;r &#034;grant&#034;) Berechtigung als vierteiligen String an: Zuerst die zu berechtigende Gruppe (Variable <em>%GROUP%</em>), nach einem Doppelpunkt folgt dann in drei Teilen die Berechtigung. Das erste Element ist der Berechtigungscode, der hier &uuml;ber die zuvor definierte Variable <em>%PERM%</em> definiert ist. Nach einem Semikolon steht das Objekt oder Attribut, f&uuml;r das die Berechtigung gilt &#8211; hier also der LDAP-Name des jeweiligen Attributs. Nach dem letzten Semikolon steht noch, f&uuml;r welche Objektklasse dies anzuwenden ist: uns geht es nur um Benutzerobjekte. Diese letzte Angabe ist optional.</p>
<p>Die <em>dsacls</em>-Syntax ist sehr umfassend und stark gew&ouml;hnungsbed&uuml;rftig. Daher sollte man seine Skripts in einer separaten Laborumgebung gut testen. Praktischerweise kennt <em>dsacls</em> auch einen Schalter, mit dem man alle Berechtigungen f&uuml;r einen AD-Zweig wieder auf den Installationsstandard zur&uuml;cksetzen kann:</p>
<pre>dsacls "OU=Vertrieb,OU=Benutzer,DC=ad2008,DC=faq-o-matic,DC=net" /S</pre>
<h3>Schritt 3: Adressen bearbeiten</h3>
<p>Bleibt die Frage: Wie kann die Personalchefin oder der Praktikant im Sekretariat denn die Adressen nun bearbeiten? Daf&uuml;r gibt es mehrere M&ouml;glichkeiten. Eine davon ist das AD-Verwaltungsprogramm: Man k&ouml;nnte dem Benutzer eine angepasste MMC-Konsole geben, die das Snap-in <em>&#034;Active Directory-Benutzer und -Computer&#034;</em> enth&auml;lt und auf die gew&uuml;nschte OU-Ebene fokussiert ist. Das Snap-in l&auml;sst tats&auml;chlich nur die Bearbeitung der Felder zu, f&uuml;r die der angemeldete Benutzer Berechtigungen hat. Andere Felder sind (gr&ouml;&szlig;tenteils) ausgegraut. Nachteil: Es sind eben nicht alle Felder inaktiv, die der Benutzer nicht bearbeiten darf &#8211; bei manchen kann er zun&auml;chst einen Eintrag machen und bekommt erst nach dem &#034;OK&#034;-Klick die Fehlermeldung, dass der Zugriff verweigert wurde. Au&szlig;erdem lassen sich die Registerkarten der MMC nicht sinnvoll anpassen &#8211; die Datenfelder sind also auf mehrere Karten verteilt, und ganz nebenbei kann der Bearbeiter auch Dinge sehen, die ihn eigentlich nichts angehen (z.B. Gruppenmitgliedschaften oder Konto-Optionen).</p>
<p>Eine sinnvolle L&ouml;sung besteht in einem angepassten Skript, das dem Bearbeiter nur die Felder und Inhalte zeigt, die in seiner Situation von Interesse sind. Einen Prototyp eines solchen Skripts stellen wir hier zur Verf&uuml;gung. Es gew&auml;hrt Zugriff auf einige wichtige Adressfelder und ist leicht erweiterbar oder auch um zus&auml;tzliche Logik und Funktionen zu erg&auml;nzen &#8211; beispielsweise eine Logging-Funktion, die alle &Auml;nderungen aufzeichnet, um Fehler leichter beheben zu k&ouml;nnen.</p>
<h4>Bedienung</h4>
<p><a href="http://www.faq-o-matic.net/wp-content/uploads/2008/06/adr.png"><img style="border: 0px;" src="http://www.faq-o-matic.net/wp-content/uploads/2008/06/adr-thumb.png" border="0" alt="adr" width="244" height="180" /></a></p>
<p>Nach dem Aufruf der Datei &#034;faq-o-matic.net-Adressbearbeitung.hta&#034; &ouml;ffnet sich ein Fenster mit einem Eingabefeld. Hier kann man einen gesuchten Namen eingeben (bzw. einen Teil davon) und dann auf &#034;Benutzer finden&#034; klicken (Tastaturk&uuml;rzel: <em>Alt-F</em>; bitte nicht <em>Return</em> dr&uuml;cken). Das Skript pr&auml;sentiert dann die gefundenen Objekte; das passende w&auml;hlt man mit dem Button <em>&#034;Benutzer ausw&auml;hlen&#034;</em> aus.</p>
<p>Nun zeigt das Skript die Adressdaten des gew&auml;hlten Benutzers an und l&auml;sst die Bearbeitung zu; alle ge&auml;nderten Felder werden gelb hinterlegt. Ein Klick auf <em>&#034;&Auml;nderungen speichern&#034;</em> schreibt die bearbeiteten Daten zur&uuml;ck ins Active Directory (nat&uuml;rlich nur, wenn der ausf&uuml;hrende Benutzer dies darf).</p>
<h4>Erweiterung</h4>
<p>Das Skript ist bewusst nur als Prototyp aufgebaut. Es ist aber recht leicht zu erweitern:</p>
<ul>
<li>Zus&auml;tzliche Felder (Attribute) zum Anzeigen und Bearbeiten kann man im Skriptcode einfach hinterlegen. Dazu &ouml;ffnet man die HTA-Datei mit einem Texteditor. Alle anzuzeigenden Felder sind als Array mit zwei Dimensionen angegeben. Beispiel:<br />
<span style="font-family: Courier New;">arrFeld(6, 0) = &#034;streetAddress&#034;<br />
arrFeld(6, 1) = &#034;Stra&szlig;e&#034;</span><br />
Die erste Angabe (<em>0 </em>in der zweiten Array-Dimension) ist der LDAP-Feldname des Attributs. Die zweite Angabe (<em>1</em> in der zweiten Array-Dimension) ist der Text, der in der Benutzermaske angezeigt werden soll.<br />
Auf diese Weise kann man zus&auml;tzliche Felder recht simpel hinzuf&uuml;gen &#8211; einfach erst den LDAP-Feldnamen, dann die Bezeichnung. Zweierlei ist zu beachten:<br />
1. Die erste Array-Dimension gibt die Reihenfolge in der Maske vor (im Original von <em>0</em> (Anzeigename) bis <em>11</em> (Fax)); f&uuml;r eine andere Reihenfolge kann man die Nummerierung einfach &auml;ndern.<br />
2. Wenn man zus&auml;tzliche Felder hinzuf&uuml;gt, muss die Gesamtzahl im Skript ge&auml;ndert werden. Dazu folgende Zeile bearbeiten:<br />
<span style="font-family: Courier New;">Dim arrFeld(11,1)</span><br />
Hier die erste Zahl &auml;ndern, sodass sie 1 geringer ist als die Zahl der Felder (bei 23 Feldern also <em>&#034;Dim arrFeld(22,1)&#034;</em>).</li>
<li>Weitere Funktionen zu erg&auml;nzen, setzt nat&uuml;rlich etwas Scripting-Erfahrung und Besch&auml;ftigung mit dem Code voraus. Denkbar ist z.B. eine Protokollierung aller &Auml;nderungen (d&uuml;rfte z.B. in der Prozedur &#034;speichereDaten()&#034; leicht einzubauen sein) oder auch eine Plausibilit&auml;tspr&uuml;fung f&uuml;r einzelne Felder.</li>
</ul>
<p>Hier ist der Download des Skripts:</p>
Note: There is a file embedded within this post, please visit this post to download the file.
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2005/02/02/bearbeiten-von-mailboxattributen-mit-admodify/' rel='bookmark' title='Bearbeiten von Mailboxattributen mit Admodify'>Bearbeiten von Mailboxattributen mit Admodify</a> <br /><small>ADModify (siehe unseren &Uuml;berblicksartikel) kann auch Exchange-Attribute im AD bearbeiten....</small></li>
<li><a href='http://www.faq-o-matic.net/2010/03/11/dsacls-in-extremsituation/' rel='bookmark' title='dsacls in Extremsituation'>dsacls in Extremsituation</a> <br /><small>dsacls.exe ist das Kommandozeilenwerkzeug, mit dem man Berechtigungen auf Objekte...</small></li>
<li><a href='http://www.faq-o-matic.net/2010/05/21/objekt-vor-zuflligem-lschen-schtzen-per-skript-setzen/' rel='bookmark' title='&ldquo;Objekt vor zuf&auml;lligem L&ouml;schen sch&uuml;tzen&rdquo; per Skript setzen'>&ldquo;Objekt vor zuf&auml;lligem L&ouml;schen sch&uuml;tzen&rdquo; per Skript setzen</a> <br /><small>Seit Windows Server 2008 gibt es eine neue Option beim...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2008/06/23/ad-adressen-im-sekretariat-bearbeiten-lassen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adam und Eva</title>
		<link>http://www.faq-o-matic.net/2008/01/26/adam-und-eva/</link>
		<comments>http://www.faq-o-matic.net/2008/01/26/adam-und-eva/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 12:43:14 +0000</pubDate>
		<dc:creator>Frank Röder</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[AD-Schema]]></category>
		<category><![CDATA[AD: Daten bearbeiten]]></category>
		<category><![CDATA[AD: Erweiterte Abfragen]]></category>
		<category><![CDATA[Windows Server 2003]]></category>
		<category><![CDATA[Windows Server 2008]]></category>
		<category><![CDATA[Windows XP]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/2008/01/26/adam-und-eva/</guid>
		<description><![CDATA[Immer mehr netzwerkf&#228;hige Ger&#228;te, wie zum Beispiel Scanner oder auch Telefonanlagen, unterst&#252;tzen das Einlesen der Benutzer per LDAP. Leider kranken diese Ger&#228;te oft an der fehlenden F&#228;higkeit, sich an einem LDAP Server zu authentifizieren oder anderen Dingen. Manchmal steht der Administrator auch vor der Aufgabe, dass beispielsweise eine Telefonanlage von mehreren Firmen genutzt wird und [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2008/10/26/ad-snapshots-deluxe/' rel='bookmark' title='AD Snapshots „Deluxe“'>AD Snapshots „Deluxe“</a> <small>Dass man unter Windows Server 2008 mit dem Kommandozeilenprogramm „ntdsutil“...</small></li>
<li><a href='http://www.faq-o-matic.net/2006/06/18/wie-kann-ich-beeinflussen-welche-attribute-beim-kopieren-eines-benutzers-kopiert-werden/' rel='bookmark' title='Wie kann ich beeinflussen, welche Attribute beim Kopieren eines Benutzers kopiert werden?'>Wie kann ich beeinflussen, welche Attribute beim Kopieren eines Benutzers kopiert werden?</a> <small>Wenn man in Active Directory ein vorhandenes Benutzerobjekt kopiert, dann...</small></li>
<li><a href='http://www.faq-o-matic.net/2010/08/03/dns-fr-ad-die-offiziellen-empfehlungen/' rel='bookmark' title='DNS f&uuml;r AD: Die offiziellen Empfehlungen'>DNS f&uuml;r AD: Die offiziellen Empfehlungen</a> <small>Microsofts Support-Team hat nun die offizielle Liste der Empfehlungen f&uuml;r...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Immer mehr netzwerkf&#228;hige Ger&#228;te, wie zum Beispiel Scanner oder auch Telefonanlagen, unterst&#252;tzen das Einlesen der Benutzer per LDAP. Leider kranken diese Ger&#228;te oft an der fehlenden F&#228;higkeit, sich an einem LDAP Server zu authentifizieren oder anderen Dingen. Manchmal steht der Administrator auch vor der Aufgabe, dass beispielsweise eine Telefonanlage von mehreren Firmen genutzt wird und diese per LDAP angebunden werden soll. Welcher Administrator m&#246;chte es, dass seine Dom&#228;nencontroller von einer Telefonanlage dieser Art abgefragt werden? Dadurch h&#228;tten ja unter Umst&#228;nden auch andere Firmen lesenden Zugriff auf das Active Directory Verzeichnis. Genau f&#252;r diese Art von Einsatzzweck hat Microsoft das Produkt ADAM entwickelt.</p>
<p><span id="more-743"></span></p>
<p>ADAM (Active Directory Application Mode) ist eine Art abgespecktes Active Directory, mit dem man genau diese Dinge realisieren kann, ohne dabei sein Netzwerk in Gefahr zu bringen. Microsoft liefert f&#252;r ADAM auch entsprechende Werkzeuge, damit man auch ohne Programmierkenntnisse zwischen Active Directory und der ADAM Instanz eine Synchronisation durchf&#252;hren kann. Wie funktioniert aber jetzt das Ganze und was wird als Voraussetzung ben&#246;tigt? Im einfachsten Fall reicht hier der Einsatz von Windows XP Professional als ADAM Server. Wer m&#246;chte, kann auch einen Windows 2003 Server einsetzen. F&#252;r diesen Artikel habe ich auf der Active Directory Seite und auf der ADAM Seite einen Windows Server 2003 R2 eingesetzt. Gl&#252;cklicherweise kann man unter Windows Server 2003 R2 den ADAM Dienst direkt als Windows Komponente installieren.    <br />OK, was muss man tun, um ADAM zu konfigurieren. Als Erstes muss man die Installation &#252;ber die Windows Komponenten vornehmen.     </p>
<p>&#160;<a title="adam_inst1.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_inst1.jpg" target="_blank"><img alt="adam_inst1.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_inst1.thumbnail.jpg" /></a>     </p>
<p>Nachdem die Installation abgeschlossen ist, findet man unter &#8222;Start -&gt; Programme&#034; den neuen Ordner &#8222;ADAM&#034;. Unterhalb des Ordners findet man eine Option &#8222;ADAM-Instanz erstellen&#034;. Mit dieser Option wird ADAM letztendlich lauff&#228;hig gemacht.     </p>
<p><a title="adam_instanz2.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_instanz2.jpg" target="_blank"><img alt="adam_instanz2.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_instanz2.thumbnail.jpg" /></a>&#160; </p>
<p>Da in meinem Demonetzwerk noch keine Instanz besteht, muss hier die Option &#8222;Eine eindeutige Instanz installieren&#034; ausgew&#228;hlt werden. Im n&#228;chsten Schritt wird jetzt der Instanzenname abgefragt. Da ich in diesem Artikel als Beispiel ein Telefonbuch installieren will, nenne ich meine Instanz kreativerweise &#8222;Telefonbuch FAQ-O-MATIC&#034;.     </p>
<p><a title="adam_instanz_name3.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_instanz_name3.jpg" target="_blank"><img alt="adam_instanz_name3.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_instanz_name3.thumbnail.jpg" /></a>     </p>
<p>Im n&#228;chsten Schritt fragt der Assistent nach den Portnummern, auf denen die Instanz arbeiten soll. Wenn es sich bei dem Server, auf dem ADAM installiert wird, um einen Dom&#228;nencontroller handelt, dann schl&#228;gt der Assistent automatisch Ports vor, die nicht von Active Directory belegt werden. Mein Demosystem ist ein einfacher Mitgliedsserver, auf dem kein Active Directory installiert ist. Deshalb werden vom Assistenten die Standardports f&#252;r LDAP (389) und LDAP/SSL (636) vorgeschlagen.     </p>
<p><a title="adam_instanz_port4.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_instanz_port4.jpg" target="_blank"><img alt="adam_instanz_port4.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_instanz_port4.thumbnail.jpg" /></a>     </p>
<p>Nachdem die Ports festgelegt wurden, m&#246;chte der Assistent eine Anwendungspartition erstellen. Die Anwendungspartition wird zuk&#252;nftig die Benutzerobjekte aufnehmen, die die Telefonanlage dann &#252;ber eine LDAP Suche abfragen kann. Ich &#252;bergehe diesen Schritt, um sp&#228;ter demonstrieren zu k&#246;nnen, wie man eine Partition auf der Kommandozeile anlegt.     </p>
<p><a title="adam_partition5.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_partition5.jpg" target="_blank"><img alt="adam_partition5.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_partition5.thumbnail.jpg" /></a>     </p>
<p>Bei der n&#228;chsten Frage m&#246;chte der Assistent wissen, wo er die ADAM Datenbank ablegen soll. Hier sollte man pr&#252;fen, ob der Speicherplatz auf dem Systemlaufwerk noch ausreichend ist. In den seltensten F&#228;llen macht sich ein Verschieben der Datenbanken auf eine andere Partition bzw. ein anderes Laufwerk erforderlich.     </p>
<p><a title="adam_pfade6.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_pfade6.jpg" target="_blank"><img alt="adam_pfade6.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_pfade6.thumbnail.jpg" /></a>     </p>
<p>Im n&#228;chsten Schritt m&#246;chte der Assistent wissen, unter welchem Benutzerkonto der Dienst laufen soll. Auch hier kann man den Standardvorschlag bestehen lassen. Das Benutzerkonto &#8222;Netzwerkdienst&#034; ist ein eingeschr&#228;nkter Security Principal, der f&#252;r diese Aufgabe geeignet ist.     </p>
<p><a title="adam_service_account7.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_service_account7.jpg" target="_blank"><img alt="adam_service_account7.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_service_account7.thumbnail.jpg" /></a>     </p>
<p>Jetzt muss ein Benutzerkonto angegeben werden, was administrative Rechte &#252;ber diese Instanz erh&#228;lt. Der Einfachheit halber lasse ich hier den Dom&#228;nen-Administrator stehen. Hier k&#246;nnte man nat&#252;rlich auch einen anderen &#8222;normalen&#034; Benutzer ausw&#228;hlen.     </p>
<p><a title="adam_admin_account8.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_admin_account8.jpg" target="_blank"><img alt="adam_admin_account8.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_admin_account8.thumbnail.jpg" /></a>     </p>
<p>Damit in einer ADAM Instanz &#252;berhaupt Objekte erstellt werden k&#246;nnen, ben&#246;tigt man ein Schema, was diese Objekte beschreibt. Auf der n&#228;chsten Seite des Assistenten hat man die M&#246;glichkeit, bestimmte LDF Dateien f&#252;r die Erweiterung des Schemas zu importieren. Wir ben&#246;tigen diese Dateien nicht, da wir die Erweiterung sp&#228;ter vornehmen.     </p>
<p><a title="adam_ldif9.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_ldif9.jpg" target="_blank"><img alt="adam_ldif9.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_ldif9.thumbnail.jpg" /></a>     </p>
<p>Nachdem der Assistent noch kurz eine Zusammenfassung der Setup Parameter anzeigt, beginnt er anschlie&#223;end mit der Installation.     <br />Damit Objekte aus der bestehenden Active Directory Umgebung in die ADAM Instanz repliziert werden k&#246;nnen, muss als n&#228;chstes das Schema erweitert werden. Im Installationsverzeichnis von ADAM befinden sich daf&#252;r zwei LDF-Dateien. Zum Einen ist das die Datei &#8222;MS-AdamSchemaW2K3.LDF&#034; f&#252;r das Schema eines Windows 2003 Active Directory und zum Anderen die Datei &#8222;MS-AdamSyncMetadata.LDF&#034;, die f&#252;r den Objektabgleich ben&#246;tigt wird.     </p>
<p><a title="adam_schema10.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_schema10.jpg" target="_blank"><img alt="adam_schema10.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_schema10.thumbnail.jpg" /></a>     </p>
<p>Der Import der LDF Dateien wird &#252;ber das aus Active Directory bekannte Kommandozeilenprogramm &#8222;ldifde&#034; realisiert.     <br /><em>ldifde -i -f MS-AdamSyncMetadata.LDF -s localhost -c &quot;cn=configuration,dc=x&quot; #configurationNamingContext      </p>
<p></em><a title="adam_schema_import_metadata11.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_schema_import_metadata11.jpg"><em></em><a title="adam_schema_import_metadata11.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_schema_import_metadata11.jpg" target="_blank"><img alt="adam_schema_import_metadata11.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_schema_import_metadata11.thumbnail.jpg" /></a></a></a>     <br /><em>     <br />ldifde -i -f MS-AdamSchemaW2K3.LDF -s localhost -t -c &quot;cn=configuration,dc=x&quot; #configurationNamingContext       </p>
<p></em><a title="adam_schema_import_w2k3_12.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_schema_import_w2k3_12.jpg"><em></em><a title="adam_schema_import_w2k3_12.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_schema_import_w2k3_12.jpg" target="_blank"><img alt="adam_schema_import_w2k3_12.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_schema_import_w2k3_12.thumbnail.jpg" /></a></a></a>     </p>
<p>Somit ist die ADAM Instanz vorbereitet. Was jetzt noch fehlt, ist die Anwendungspartition, die die Userobjekte anschlie&#223;end aufnehmen soll. F&#252;r diese Aufgabe steht das Programm &#8222;dsmgmt.exe&#034; zur Verf&#252;gung. Das Gleiche geht aber auch mit &#8222;ntdsutil&#034;.     </p>
<p><a title="adam_create_partition_13.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_create_partition_13.jpg" target="_blank"><img alt="adam_create_partition_13.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_create_partition_13.thumbnail.jpg" /></a>     </p>
<p>Jetzt ist ADAM f&#252;r die erste Synchronisation bereit. F&#252;r den Abgleich zwischen Active Directory und ADAM stellt Microsoft das Programm &#8222;adamsync&#034; zur Verf&#252;gung. Adamsync ben&#246;tigt eine XML-Konfigurationsdatei, in der alle wichtigen Parameter festgehalten sind. Im Installationsverzeichnis existiert bereits eine Beispieldatei. Diese muss nur noch auf die eigenen Bed&#252;rfnisse angepasst werden. </p>
</p>
<div class="CodeFormatContainer">.<br />
<style>
<p><!--
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}</p>
<p>.csharpcode pre { margin: 0em; }</p>
<p>.csharpcode .rem { color: #008000; }</p>
<p>.csharpcode .kwrd { color: #0000ff; }</p>
<p>.csharpcode .str { color: #006080; }</p>
<p>.csharpcode .op { color: #0000c0; }</p>
<p>.csharpcode .preproc { color: #cc6633; }</p>
<p>.csharpcode .asp { background-color: #ffff00; }</p>
<p>.csharpcode .html { color: #800000; }</p>
<p>.csharpcode .attr { color: #ff0000; }</p>
<p>.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}</p>
<p>.csharpcode .lnum { color: #606060; }</p>
<p>--></style>
<pre class="csharpcode">&lt;?xml version=<span class="str">&quot;1.0&quot;</span>?&gt;
&lt;doc&gt;
 &lt;configuration&gt;
  &lt;description&gt;FAQ-O-MATIC&lt;/description&gt;
  &lt;security-mode&gt;<span class="kwrd">object</span>&lt;/security-mode&gt;
  &lt;source-ad-name&gt;faq-o-matic.net&lt;/source-ad-name&gt;
  &lt;source-ad-partition&gt;dc=faq-o-matic,dc=net&lt;/source-ad-partition&gt;
  &lt;source-ad-account&gt;&lt;/source-ad-account&gt;
  &lt;account-domain&gt;&lt;/account-domain&gt;
  &lt;target-dn&gt;dc=faqomatic&lt;/target-dn&gt;
  &lt;query&gt;
   &lt;<span class="kwrd">base</span>-dn&gt;dc=faq-o-matic,dc=net&lt;/<span class="kwrd">base</span>-dn&gt;
   &lt;<span class="kwrd">object</span>-filter&gt;(&amp;(objectclass=user)(telephoneNumber=*))&lt;/<span class="kwrd">object</span>-filter&gt;
   &lt;attributes&gt;
    &lt;include&gt;givenname&lt;/include&gt;
    &lt;include&gt;sn&lt;/include&gt;
    &lt;include&gt;telephoneNumber&lt;/include&gt;
    &lt;exclude&gt;&lt;/exclude&gt;
   &lt;/attributes&gt;
  &lt;/query&gt;
  &lt;schedule&gt;
   &lt;aging&gt;
    &lt;frequency&gt;2&lt;/frequency&gt;
    &lt;num-objects&gt;600&lt;/num-objects&gt;
   &lt;/aging&gt;
   &lt;schtasks-cmd&gt;&lt;/schtasks-cmd&gt;
  &lt;/schedule&gt;
 &lt;/configuration&gt;
 &lt;synchronizer-state&gt;
  &lt;dirsync-cookie&gt;&lt;/dirsync-cookie&gt;
  &lt;status&gt;&lt;/status&gt;
  &lt;authoritative-adam-instance&gt;&lt;/authoritative-adam-instance&gt;
  &lt;configuration-file-guid&gt;&lt;/configuration-file-guid&gt;
  &lt;last-sync-attempt-time&gt;&lt;/last-sync-attempt-time&gt;
  &lt;last-sync-success-time&gt;&lt;/last-sync-success-time&gt;
  &lt;last-sync-error-time&gt;&lt;/last-sync-error-time&gt;
  &lt;last-sync-error-<span class="kwrd">string</span>&gt;&lt;/last-sync-error-<span class="kwrd">string</span>&gt;
  &lt;consecutive-sync-failures&gt;&lt;/consecutive-sync-failures&gt;
  &lt;user-credentials&gt;&lt;/user-credentials&gt;
  &lt;runs-since-last-<span class="kwrd">object</span>-update&gt;&lt;/runs-since-last-<span class="kwrd">object</span>-update&gt;
  &lt;runs-since-last-full-sync&gt;&lt;/runs-since-last-full-sync&gt;
 &lt;/synchronizer-state&gt;
&lt;/doc&gt;</pre>
</div>
<p>Gehen wir die wichtigsten Elemente der XML Datei einmal durch. Im Element &#8222;&lt;description&gt;&#034; wird nur eine Beschreibung festgelegt. Mit Hilfe dieser Beschreibung kann man durch &#8222;adamsync /list localhost&#034; die installierten Konfigurationen besser identifizieren. Die Elemente &#8222;source-ad-name&#034; und &#8222;source-ad-partition&#034; identifizieren die Quelldom&#228;ne. Mit &#8222;source-ad-name&#034; wird der FQDN der Quelldom&#228;ne festgelegt und mit &#8222;source-ad-partition&#034; die Active Directory Partition, in der die zu synchronisierenden Objekte gesucht werden. Das Element &#8222;&lt;target-dn&gt;&#034; gibt die Zielpartition an, in der die synchronisierten Objekte erstellt werden sollen. Adamsync ermittelt die zu synchronisierenden Objekte &#252;ber eine LDAP Suche. F&#252;r diese Suche werden zwei Dinge ben&#246;tigt. Als Erstes muss ein &#8222;&lt;base-dn&gt;&#034; festgelegt werden. Dieser distinguished Name beschreibt den Ausgangspunkt der LDAP Suche. Danach wird der eigentliche Suchfilter festgelegt. Da wir die ADAM Instanz als Telefonbuch nutzen wollen, werden nur Benutzer synchronisiert, die auch eine Telefonnummer besitzen. Dadurch ergibt sich folgender LDAP Filter:</p>
<p>&#8222;(&amp;(objectclass=user)(telephoneNumber=*))&#034;</p>
<p>Das kaufm&#228;nnische &#8222;Und&#034; kann aber nicht in der XML Datei interpretiert werden. Deshalb muss dieses Sonderzeichen in der XML Datei kodiert werden.</p>
<p>&#8222;(&amp;(objectclass=user)(telephoneNumber=*))&#034;</p>
<p>Als n&#228;chstes kommen wir zu den Attributen, die f&#252;r unsere Objekte mit repliziert werden sollen. F&#252;r ein Telefonbuch muss ja ein Userobjekt nicht mit allen Attributen repliziert werden. F&#252;r diesen Anwendungsfall sollte die Angabe von Vorname, Nachname und Telefonnummer ausreichen. Welche Attribute repliziert werden, kann man &#252;ber das Element &#8222;&lt;attributes&gt;&#034; steuern. Da f&#252;r den Anwendungsfall &#8222;Telefonbuch&#034; nur drei Attribute repliziert werden m&#252;ssen, habe ich mich daf&#252;r entschieden, diese Attribute &#252;ber &#8222;&lt;include&gt;&#034; anzugeben. Wenn die Zahl der zu synchronisierenden Attribute &#252;berwiegen sollte und man nur einige wenige von der Synchronisation ausschlie&#223;en will, dann kann man diese &#252;ber &#8222;&lt;exclude&gt;&#034; ausschlie&#223;en. Ein weiterer wichtiger Punkt ist das &#8222;&lt;aging&gt;&#034;. Dar&#252;ber kann gesteuert werden, was passieren soll, wenn ein Objekt in der Quelle gel&#246;scht wird. Dazu aber an sp&#228;terer Stelle mehr.<br />
  <br />Nachdem alle Einstellungen in der XML Datei vorgenommen wurden, kann diese jetzt installiert werden. Daf&#252;r bietet das Tool &#8222;adamsync&#034; den Schalter &#8222;/install&#034; an. </p>
<p><a title="adam_sync_install14.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_sync_install14.jpg" target="_blank"><img alt="adam_sync_install14.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_sync_install14.thumbnail.jpg" /></a> </p>
<p><em><br />
    <br />adamsync /i localhost NAMEDERXMLDATEI.XMLJetzt ist ADAM f&#252;r die erste Synchronisation bereit. </p>
<p></em><a title="adam_sync_15.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_sync_15.jpg"><em></em><a title="adam_sync_15.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_sync_15.jpg" target="_blank"><img alt="adam_sync_15.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_sync_15.thumbnail.jpg" /></a></a></a> </p>
<p><em>adamsync /sync localhost dc=faqomatic </p>
<p></em>Ein Wort zur Performance. In der Active Directory Dom&#228;ne, die hier als Quelle genutzt wurde, existieren 20.000 Benutzerobjekte. Der erste Synchronisationsvorgang, zwischen Active Directory und ADAM, nahm ca. 2 Minuten und 30 Sekunden in Anspruch. Dabei wurden ca. 68,1 MB an Daten &#252;bertragen. Jede weitere Synchronisation wurde innerhalb von 5 Sekunden beendet und es wurden dabei ca. 69 KB &#252;bertragen. </p>
<p>Nachdem also die erste Replikation erfolgreich abgelaufen ist, kann man die oben stehende Kommandozeile als geplanten Task einrichten. Dadurch kann ein periodischer Abgleich zwischen Active Directory und ADAM sichergestellt werden. Was passiert aber mit den gel&#246;schten Objekten? Diese bleiben bei der momentanen Konfiguration bestehen. Hier kommt jetzt das Element &#8222;&lt;aging&gt;&#034; der XML Konfigurationsdatei ins Spiel. &#220;ber das Unterelement &#8222;&lt;frequency&gt;&#034; kann bestimmt werden, aller wie viel Sychronisationszyklen eine &#220;berpr&#252;fung auf gel&#246;schte Objekte vorgenommen wird. Das Unterelement &#8222;&lt;num-objects&gt;&#034; gibt an, wie viele Objekte auf einmal untersucht werden sollen. Wenn wir in unserem Beispiel f&#252;r &#8222;&lt;frequency&gt;&#034; den Wert &#8222;2&#034; setzen und f&#252;r &#8222;&lt;num-objects&gt;&#034; den Wert 500, dann bedeutet dies, dass &#8222;adamsync&#034; im schlimmsten Fall 80 Replikationszyklen ben&#246;tigt, um alle Objekte auf einen eventuellen L&#246;schvorgang zu pr&#252;fen. Findet adamsync ein im Active Directory gel&#246;schtes Objekt, dann wird es auch in der Adaminstanz entfernt. Um die Performance hier einmal zu testen, habe ich mit drei verschiedenen Werten in &#8222;&lt;num-objects&gt;&#034; gearbeitet.</p>
<table cellspacing="0" cellpadding="2" width="400" border="1">
<tbody>
<tr>
<td valign="top" width="133">Wert in &lt;num-objects&gt;</td>
<td valign="top" width="133">Dauer</td>
<td valign="top" width="133">Ges. und Empf. Daten</td>
</tr>
<tr>
<td valign="top" width="133">5.000</td>
<td valign="top" width="133">33 Sekunden</td>
<td valign="top" width="133">Empfangen: ca. 2MB<br />
        <br />Gesendet: ca. 1,5MB</td>
</tr>
<tr>
<td valign="top" width="133">10.000</td>
<td valign="top" width="133">1 Minute 20 Sekunden</td>
<td valign="top" width="133">Empfangen: ca. 4MB<br />
        <br />Gesendet: ca. 3MB</td>
</tr>
<tr>
<td valign="top" width="133">20.000</td>
<td valign="top" width="133">2 Minuten 15 Sekunden</td>
<td valign="top" width="133">Empfangen: ca. 8MB<br />
        <br />Gesendet: ca. 6MB</td>
</tr>
</tbody>
</table>
<p>Leider gibt es bei der Synchronisation einen unsch&#246;nen Nebeneffekt. Adamsync scheint bei der Synchronisation der gel&#246;schten Objekte den LDAP Filter &#8222;(&amp;(objectclass=user)(telephoneNumber=*))&#034; zu nutzen. Da bei einem L&#246;schvorgang aber das Attribut &#8222;telephoneNumber&#034; vom Objekt entfernt wird, kann adamsync ein gel&#246;schtes Objekt nicht korrekt erkennen. Das kann dazu f&#252;hren, dass adamsync alle synchronisierten Objekte verwirft und in den Container &#8222;LostAndFound&#034; der ADAM Partition verschiebt. Dieser Tatsache kann man aber mit einem kleinen Hack entgegenwirken. Dazu muss man im Active Directory Schema der Quelle eine kleine Anpassung im Attribut &#8222;telephoneNumber&#034; vornehmen. Durch das Ver&#228;ndern der Eigenschaft &#8222;searchflags&#034; im Attribut &#8222;telephoneNumber&#034; kann man verhindern, dass dieses Attribut von einem Objekt entfernt wird. Dazu muss die Eigenschaft &#8222;searchflags&#034; des Attributs &#8222;telephoneNumber&#034; auf den dezimalen Wert 8 gesetzt werden. Dieser Wert entspricht bin&#228;r dem vierten Bit. </p>
<p><a title="ad_searchflags16.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/ad_searchflags16.jpg" target="_blank"><img alt="ad_searchflags16.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/ad_searchflags16.thumbnail.jpg" /></a> </p>
<p>Dadurch bleibt beim L&#246;schen eines Objekts dieses Attribut am gel&#246;schten Objekt erhalten und adamsync kann eine erfolgreiche Synchronisation durchf&#252;hren. </p>
<p>Kommen wir jetzt zum letzten Punkt dieses Artikels. Jetzt muss nur noch sichergestellt werden, dass auch mit einer anonymen Anmeldung auf die Informationen im ADAM lesend zugegriffen werden kann. Um das zu erm&#246;glichen, m&#252;ssen zwei Schritte durchgef&#252;hrt werden. Als erstes muss der anonymen Anmeldung erlaubt werden, sich ohne Authentifizierung mit der Telefonbuch Partition zu verbinden. Standardm&#228;&#223;ig ist das nicht erlaubt. Um es zu erm&#246;glichen, muss das &#8222;dsHeuristics&#034; Attribut in den Eigenschaften des Directory Services Objekts der Konfigurationspartition auf den Wert &#8222;0000002001000&#034; angepasst werden. </p>
<p><a title="adam_dsheur17.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_dsheur17.jpg" target="_blank"><img alt="adam_dsheur17.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_dsheur17.thumbnail.jpg" /></a> </p>
<p>Jetzt kann zumindest schon ein LDAP Bind auf alle Partitionen der ADAM Instanz durchgef&#252;hrt werden. Dadurch kann aber eine anonyme Anmeldung noch keine Objekte der einzelnen Partitionen lesen. Damit die einzelnen Partitionen auch durchsucht werden k&#246;nnen, f&#252;gt man im einfachsten Fall das Konto &#8222;Anonymous-Anmeldung&#034; in die ADAM Rolle &#8222;Readers&#034; der entsprechenden Partition hinzu. </p>
<p><a title="adam_anoread18.jpg" href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_anoread18.jpg" target="_blank"><img alt="adam_anoread18.jpg" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/adam_anoread18.thumbnail.jpg" /></a> </p>
<p>Jetzt k&#246;nnen die Userobjekte in der ADAM Partition auch ohne Authentifizierung gelesen werden. Damit w&#228;re es jetzt m&#246;glich, diese ADAM Instanz f&#252;r das Erstellen eines Telefonbuchs zu nutzen.</p>
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2008/10/26/ad-snapshots-deluxe/' rel='bookmark' title='AD Snapshots „Deluxe“'>AD Snapshots „Deluxe“</a> <br /><small>Dass man unter Windows Server 2008 mit dem Kommandozeilenprogramm „ntdsutil“...</small></li>
<li><a href='http://www.faq-o-matic.net/2006/06/18/wie-kann-ich-beeinflussen-welche-attribute-beim-kopieren-eines-benutzers-kopiert-werden/' rel='bookmark' title='Wie kann ich beeinflussen, welche Attribute beim Kopieren eines Benutzers kopiert werden?'>Wie kann ich beeinflussen, welche Attribute beim Kopieren eines Benutzers kopiert werden?</a> <br /><small>Wenn man in Active Directory ein vorhandenes Benutzerobjekt kopiert, dann...</small></li>
<li><a href='http://www.faq-o-matic.net/2010/08/03/dns-fr-ad-die-offiziellen-empfehlungen/' rel='bookmark' title='DNS f&uuml;r AD: Die offiziellen Empfehlungen'>DNS f&uuml;r AD: Die offiziellen Empfehlungen</a> <br /><small>Microsofts Support-Team hat nun die offizielle Liste der Empfehlungen f&uuml;r...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2008/01/26/adam-und-eva/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Excel: Admins unbekannter Liebling</title>
		<link>http://www.faq-o-matic.net/2008/01/19/excel-admins-unbekannter-liebling/</link>
		<comments>http://www.faq-o-matic.net/2008/01/19/excel-admins-unbekannter-liebling/#comments</comments>
		<pubDate>Sat, 19 Jan 2008 10:38:47 +0000</pubDate>
		<dc:creator>Nils Kaczenski</dc:creator>
				<category><![CDATA[AD: Daten bearbeiten]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/2008/01/19/excel-admins-unbekannter-liebling/</guid>
		<description><![CDATA[Excel ist ein beliebtes Werkzeug f&#252;r vielerlei Aufgaben. Am meisten lieben es &#8211; einem g&#228;ngigen Klischee folgend &#8211; Buchhalterinnen und Controller. Viele Administratoren nutzen es nur, um einfache Listen zu verwalten. Dabei kann Excel viel mehr f&#252;r den Admin tun! Die Tabellenkalkulation eignet sich n&#228;mlich hervorragend als Skriptgenerator und Programmierhilfe. Dazu kann man sich gut [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2010/01/04/excel-fhrenden-apostroph-entfernen/' rel='bookmark' title='Excel: F&uuml;hrenden Apostroph entfernen'>Excel: F&uuml;hrenden Apostroph entfernen</a> <small>Wenn in Excel der Inhalt einer Zelle mit einem Apostroph...</small></li>
<li><a href='http://www.faq-o-matic.net/2004/12/31/erzeugen-von-ldifde-templates-aus-excel-mit-gnu-awk/' rel='bookmark' title='Erzeugen von ldifde-Templates aus Excel mit GNU Awk'>Erzeugen von ldifde-Templates aus Excel mit GNU Awk</a> <small>Viele Administratoren benutzen gern csvde, da die Ausgangsdateien sich sehr...</small></li>
<li><a href='http://www.faq-o-matic.net/2007/01/12/csv-dateien-mit-excel-oeffnen/' rel='bookmark' title='CSV-Dateien mit Excel &#246;ffnen'>CSV-Dateien mit Excel &#246;ffnen</a> <small>Excel wird bei der Installation als Standardprogramm f&uuml;r CSV-Dateien eingerichtet....</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Excel ist ein beliebtes Werkzeug f&uuml;r vielerlei Aufgaben. Am meisten lieben es &#8211; einem g&auml;ngigen Klischee folgend &#8211; Buchhalterinnen und Controller. Viele Administratoren nutzen es nur, um einfache Listen zu verwalten. Dabei kann Excel viel mehr f&uuml;r den Admin tun!</p>
<p>Die Tabellenkalkulation eignet sich n&auml;mlich hervorragend als Skriptgenerator und Programmierhilfe. Dazu kann man sich gut der Funktionen bedienen, die Zeichenketten verarbeiten. In Zusammenarbeit mit der Importfunktion l&auml;sst sich damit so manche Aufgabe in wenigen Minuten l&ouml;sen, f&uuml;r die man manuell Stunden ben&ouml;tigen w&uuml;rde. Und das alles ohne Programmierkenntnisse und langes Debugging komplexer Skripts.</p>
<p><span id="more-728"></span>Das Geheimnis liegt darin, dass viele Massenoperationen im Prinzip mit (relativ) einfachen Kommandozeilenbefehlen auf eine vorhandene Liste von Objekten angewendet werden k&ouml;nnen. Eine typische Frage in den Newsgroups ist etwa: „Ich habe eine Liste von neuen Mitarbeitern, die ich alle in Active Directory als Benutzer anlegen muss. Wie kann ich diese Liste in die Dom&auml;ne importieren?&#034; Oft wird als Antwort auf diverse Import-Programme oder auf komplexe VBS- oder PowerShell-Skripts verwiesen. Mit Excel kann aber auch ein Nichtprogrammierer schnell zum Erfolg kommen.</p>
<p><strong>Mehrere Benutzer schnell anlegen</strong></p>
<p>Hier zun&auml;chst eine einfache Variante: Ein einzelnes Benutzerkonto l&auml;sst sich mit dem Kommandozeilenbefehl „net user&#034; in der Dom&auml;ne anlegen. F&uuml;r Ellen Bogen k&ouml;nnte dies mit ein paar Zusatzinformationen so lauten (Kommando in einer einzigen Zeile):</p>
<pre>net user EllenB GeheimesKennwort /add
   /FullName:"Ellen Bogen" /ScriptPath:vertrieb.bat /domain</pre>
<p><a href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/kaczenski-exceladmin-netuser-01.gif" title="kaczenski-exceladmin-netuser-01.gif"><img border="0" align="left" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/kaczenski-exceladmin-netuser-01.thumbnail.gif" alt="kaczenski-exceladmin-netuser-01.gif" /></a>Angenommen, in einer Excel-Liste sind bereits der Name (Spalte A), der Anmeldename (Spalte B), das Startkennwort (Spalte C) und die Abteilung (Spalte D) f&uuml;r mehrere neue Benutzer vorgegeben &#8211; dann eignet sich folgende Formel in Spalte E, jedes Benutzerkonto zu erzeugen:</p>
<p><em>=&#034;net user &#034; &amp; B2 &amp; &#034; &#034; &amp; C2 &amp; &#034; /add /Fullname:&#034;"&#034; &amp; A2 &amp; &#034;&#034;" /Scriptpath:&#034; &amp;D2 &amp; &#034;.bat /domain&#034;</em></p>
<p>Das sieht auf den ersten Blick etwas komplex aus, ist aber gar nicht so schlimm. Der Reihe nach:</p>
<ul>
<li>Das Gleichheitszeichen leitet eine Formel ein. Danach kommen Anf&uuml;hrungsstriche, um einen festen Text anzugeben &#8211; hier das Kommando „net user&#034;.</li>
<li>Nach „net user&#034; muss der Benutzername folgen, der in Zelle B2 steht. Also Anf&uuml;hrungsstriche schlie&szlig;en, mit &amp; der Zeichenkette einen neuen Teil hinzuf&uuml;gen und auf Zelle B2 verweisen.</li>
<li>Als n&auml;chstes kommt das Kennwort, durch ein Leerzeichen getrennt. Also wieder ein &amp;, um die n&auml;chste Zeichenkette anzuf&uuml;gen, hier ein einzelnes Leerzeichen, das auch wieder in Anf&uuml;hrungsstriche eingefasst wird. Das Kennwort steht in Zelle C2, auf die wieder mit &amp; verwiesen wird.</li>
<li>Als n&auml;chstes kommt wieder ein fester Text, n&auml;mlich die Optionsschalter „/add&#034; und „FullName&#034;. Letzterer erwartet nach einem Leerzeichen den Anzeigenamen des Benutzers. Da dieser Name ein Leerzeichen enth&auml;lt, muss er auf der Kommandozeile in Anf&uuml;hrungsstriche gesetzt werden. Nun wird es etwas wild: Die Anf&uuml;hrungsstriche nutzt Excel ja bereits selbst f&uuml;r die Formel. Um Excel mitzuteilen, dass es nun die Anf&uuml;hrungsstriche im Formelergebnis ausgeben soll, muss das Zeichen mehrfach angegeben werden (diese Notation benutzt Microsoft an vielen Stellen). Doppelt wird das Zeichen angegeben, wenn dahinter wieder fester Text steht. In diesem Fall folgt danach aber ein weiterer Teil der Formel, n&auml;mlich eben der Anzeigename. Also werden die Anf&uuml;hrungsstriche gleich dreimal hintereinander angegeben: Zweimal, um die Ausgabe zu erzeugen, und ein drittes Mal, um die Zeichenkette abzuschlie&szlig;en und die Formel fortzusetzen.</li>
<li>Wiederum mit drei Anf&uuml;hrungsstrichen wird der letzte Schalter „/ScriptPath&#034; eingeleitet, der auf Zelle D2 verweist. Zum Schluss schlie&szlig;lich noch die Dateinamenerweiterung und die Option „/domain&#034;.</li>
</ul>
<p>Diese Formel wird mit der Maus in alle Zellen kopiert, f&uuml;r die ein Kommando erzeugt werden soll. Excel passt die Zellenbez&uuml;ge automatisch an. Im Effekt stehen nun in der Spalte E Kommandos dieser Art:</p>
<pre>net user EllenB abc123! /add
   /Fullname:"Ellen Bogen" /Scriptpath:Vertrieb.bat /domain</pre>
<pre>net user KarlK bcd234! /add
   /Fullname:"Karl Koop" /Scriptpath:Einkauf.bat /domain</pre>
<pre>net user UteD cde345! /add
   /Fullname:"Ute Digute" /Scriptpath:Buchhaltung.bat /domain</pre>
<p>Diese Kommandospalte kann man nun markieren und mit Strg-C in die Zwischenablage kopieren. Von dort in Notepad einf&uuml;gen und als „users.bat&#034; abspeichern und ausf&uuml;hren &#8211; voilà!</p>
<p>Das Kommando „net user&#034; hat aber einen entscheidenden Nachteil: Es erzeugt neue Objekte nur im Standardcontainer der Dom&auml;ne. Normalerweise ist das der Ordner „Users&#034;. Zwar kann man diesen vorher mit „redirusr.exe&#034; auf einem Windows Server 2003 umlenken, aber das ist f&uuml;r unsere Zwecke nicht besonders praktikabel.</p>
<p><strong>Flexibler mit ds-Tools</strong> </p>
<p>Sinnvoller ist es, mit leistungsf&auml;higeren Kommandos zu arbeiten. Windows Server 2003 selbst bringt daf&uuml;r die „ds-Tools&#034; mit, einen Satz von Kommandozeilenbefehlen, die mit „ds&#034; (f&uuml;r „Directory Service&#034;) beginnen. Dies sind die Befehle „dsadd&#034; (Hinzuf&uuml;gen von Objekten), „dsmod&#034; (&Auml;ndern), „dsquery&#034; (im AD suchen), „dsget&#034; (Details zu einem Einzelobjekt) und „dsrm&#034; (L&ouml;schen). N&auml;here Informationen dazu finden sich in der Server-Onlinehilfe. Ein Kommando, mit dem G&uuml;nter Melzer in der OU „Marketing&#034; angelegt wird, w&auml;re etwa dieses (wiederum eine einzige Zeile):</p>
<pre>dsadd user "CN=G&uuml;nter Melzer,OU=Marketing,DC=faq-o-matic,DC=net"
   -samid GMelzer -pwd abc123!</pre>
<p>Das l&auml;sst sich nat&uuml;rlich noch mit zahlreichen Optionen verfeinern, die in <em>dsadd</em> bereits vordefiniert sind. Die passende Excel-Formel f&uuml;r eine massenweise Listenverarbeitung l&auml;sst sich nach obigem Beispiel sicher leicht aufbauen.</p>
<p><strong>Noch flexibler mit AdMod</strong> </p>
<p>Mehr Flexibilit&auml;t als mit den ds-Tools hat man allerdings mit <a href="http://www.faq-o-matic.net/2006/11/29/active-directory-massenoperationen-mit-admod-und-adfind/"><em>AdMod</em> von Joe Richards</a>:</p>
<p>[faq-o-matic.net » Active-Directory-Massenoperationen mit AdMod und AdFind]</p>
<p><a href="http://www.faq-o-matic.net/2006/11/29/active-directory-massenoperationen-mit-admod-und-adfind/">http://www.faq-o-matic.net/2006/11/29/active-directory-massenoperationen-mit-admod-und-adfind/</a></p>
<p><em>AdMod</em> erlaubt fast beliebige &Auml;nderungen an AD-Objekten. Recht effizient kann man etwa arbeiten, wenn mehrere &Auml;nderungen an einer Menge von Objekten ausgef&uuml;hrt werden sollen. F&uuml;r jede &Auml;nderung kann man mit der Excel-Technik eine eigene Spalte mit der passenden Befehlsformel erzeugen.</p>
<p>Ein Beispiel: Alle Benutzerkonten einer Dom&auml;ne sollen umbenannt werden. Der neue Anmeldename und der alte Name (hier: Die Personalnummer) stehen in einer Excel-Tabelle. Mit der Umbenennung gehen einige weitere &Auml;nderungen einher, etwa das Umbenennen von Profil- und Home-Ordnern.</p>
<p><a href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/kaczenski-exceladmin-tabelle-01.gif" title="kaczenski-exceladmin-tabelle-01.gif"><img border="0" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/kaczenski-exceladmin-tabelle-01.thumbnail.gif" alt="kaczenski-exceladmin-tabelle-01.gif" /></a> </p>
<p>Zun&auml;chst ben&ouml;tigt <em>AdMod</em> (genau wie die ds-Tools) den <em>distinguishedName</em> (DN) des zu &auml;ndernden Objekts. Machen wir es uns einfach und tun so, als l&auml;gen alle Objekte in derselben OU. Dann k&ouml;nnte folgende Formel in Spalte C helfen:</p>
<p><em>=&#034;CN=pers-&#034; &amp;B2&amp;&#034;,OU=Personal,DC=contoso,DC=com&#034;</em></p>
<p>So ist der DN dann als Ergebnis in Spalte C zu finden. Eine Formel zum &Auml;ndern des Anmeldenamens auf den Wert, der jeweils in Spalte A steht, w&auml;re diese hier (einzutragen in Spalte D):</p>
<p><em>=&#034;ADMod -b &#034;&#034;"&amp;$C2&amp;&#034;"&#034; &#034;&#034;sAMAccountName::&#034;&amp;$A2&amp;&#034;"&#034;"</em></p>
<p>Das daraus resultierende AdMod-Kommando ist (auch hier eine einzige Zeile):</p>
<pre>ADMod -b "CN=pers-33268,OU=Personal,DC=contoso,DC=com"
   "sAMAccountName::AlbrechtH"</pre>
<p>Ebenso kann &uuml;ber eine vergleichbare Formel in Spalte E der Profilordner in Active Directory umbenannt werden:</p>
<p><em>=&#034;ADMod -b &#034;&#034;"&amp;$C2&amp;&#034;"&#034; &#034;&#034;profilePath::\\file03\profiles$\&#034;&amp;$A2&amp;&#034;"&#034;"</em></p>
<p>Doch Achtung, in diesem Fall muss nat&uuml;rlich auch der Ordner auf dem Server umbenannt werden. Das gelingt mit dieser Formel in Spalte F:</p>
<p><em>=&#034;ren &#034;&#034;E:\Profiles\pers-&#034;&amp;B2&amp;&#034;"&#034; &#034; &amp; $A2</em></p>
<p>Entsprechend k&ouml;nnen in den Spalten G, H und I die analogen Formeln eingetragen werden, um den Home-Ordner sowohl in AD als auch auf dem Server zu &auml;ndern (hier noch eine dritte Formel, um den Laufwerksbuchstaben f&uuml;r das Mapping mitzugeben):</p>
<p><em>=&#034;ADMod -b &#034;&#034;"&amp;$C2&amp;&#034;"&#034; &#034;&#034;homeDirectory::\\file03\home$\&#034;&amp;$A2&amp;&#034;"&#034;"</em></p>
<p><em>=&#034;ADMod -b &#034;&#034;"&amp;$C2&amp;&#034;"&#034; &#034;&#034;homeDrive::O:&#034;"&#034;</em></p>
<p><em>=&#034;ren &#034;&#034;E:\Home\pers-&#034;&amp;B2&amp;&#034;"&#034; &#034; &amp; $A2</em></p>
<p> <a href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/kaczenski-exceladmin-tabelle-02.gif" title="kaczenski-exceladmin-tabelle-02.gif"><img border="0" src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/kaczenski-exceladmin-tabelle-02.thumbnail.gif" alt="kaczenski-exceladmin-tabelle-02.gif" /></a></p>
<p>Nachdem diese Formeln auf alle Zeilen der Tabelle angewendet wurden, kann man die einzelnen Spalten markieren, mit Strg-C kopieren und in eine Batchdatei einf&uuml;gen. Da diese f&uuml;r jede &Auml;nderung eine einzelne Zeile enth&auml;lt, kann man sie meist leichter kontrollieren als eine Programmierschleife. Zudem kann man einzelne Zeilen zu Testzwecken isolieren, um die grundlegende Funktion zu pr&uuml;fen.</p>
<p><strong>Kopieren auf mehrere Server</strong></p>
<p>Ein letzter Anwendungsfall: Eine bestimmte Datei soll in einen bestimmten Ordner auf allen Servern kopiert werden. Auch dies l&auml;sst sich mit Excel gut automatisieren. Zun&auml;chst ben&ouml;tigen wir aber eine Liste der Server. Vorausgesetzt, alle Server befinden sich in einer oder wenigen OUs im AD, ist dies einfach: In <em>Active Directory-Benutzer und -Computer</em> die richtige OU heraussuchen, Rechtsklick darauf. Mit dem Befehl „Liste exportieren&#034; aus dem Kontextmen&uuml; werden die Servernamen (und etwas Beiwerk) in eine Textdatei geschrieben. Diese kann man nun in Excel &ouml;ffnen und alle unn&ouml;tigen Daten entfernen.</p>
<p>Stehen nun die Servernamen in Spalte A, lassen sich die Kopierkommandos mit dieser Formel in Spalte B erzeugen:</p>
<p><em>=&#034;copy C:\temp\datei.txt \\&#034; &amp; A2 &amp; &#034;\c$\daten\&#034;</em></p>
<p>Und wieder: Das Ergebnis in eine Textdatei kopieren, als Batchdatei abspeichern und ausf&uuml;hren.</p>
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2010/01/04/excel-fhrenden-apostroph-entfernen/' rel='bookmark' title='Excel: F&uuml;hrenden Apostroph entfernen'>Excel: F&uuml;hrenden Apostroph entfernen</a> <br /><small>Wenn in Excel der Inhalt einer Zelle mit einem Apostroph...</small></li>
<li><a href='http://www.faq-o-matic.net/2004/12/31/erzeugen-von-ldifde-templates-aus-excel-mit-gnu-awk/' rel='bookmark' title='Erzeugen von ldifde-Templates aus Excel mit GNU Awk'>Erzeugen von ldifde-Templates aus Excel mit GNU Awk</a> <br /><small>Viele Administratoren benutzen gern csvde, da die Ausgangsdateien sich sehr...</small></li>
<li><a href='http://www.faq-o-matic.net/2007/01/12/csv-dateien-mit-excel-oeffnen/' rel='bookmark' title='CSV-Dateien mit Excel &#246;ffnen'>CSV-Dateien mit Excel &#246;ffnen</a> <br /><small>Excel wird bei der Installation als Standardprogramm f&uuml;r CSV-Dateien eingerichtet....</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2008/01/19/excel-admins-unbekannter-liebling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maulkorb f&#252;r den OU-Admin</title>
		<link>http://www.faq-o-matic.net/2008/01/13/maulkorb-fuer-den-ou-admin/</link>
		<comments>http://www.faq-o-matic.net/2008/01/13/maulkorb-fuer-den-ou-admin/#comments</comments>
		<pubDate>Sun, 13 Jan 2008 19:41:20 +0000</pubDate>
		<dc:creator>Frank Röder</dc:creator>
				<category><![CDATA[AD-Schema]]></category>
		<category><![CDATA[AD: Daten bearbeiten]]></category>
		<category><![CDATA[Windows Server 2003]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/2008/01/13/maulkorb-fr-den-ou-admin/</guid>
		<description><![CDATA[In vielen Active-Directory-Umgebungen wird die M&#246;glichkeit genutzt, bestimmten Mitarbeitern Berechtigungen auf das Active Directory zu geben. So k&#246;nnte man zum Beispiel dem Azubi  der IT-Abteilung das Recht einr&#228;umen, neue Benutzer in Active Directory anzulegen. Dadurch kann der Azubi also keinen Schaden anrichten. Er kann ja nur neue Benutzer anlegen &#8230; Leider bringt man dadurch sein [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2006/08/26/dhcp-server-autorisieren-ohne-organisations-admin-rechte/' rel='bookmark' title='DHCP-Server autorisieren ohne Organisations-Admin-Rechte'>DHCP-Server autorisieren ohne Organisations-Admin-Rechte</a> <small>Um in einer Active-Directory-Umgebung einen auf Windows 2000/2003 basierenden DHCP-Server...</small></li>
<li><a href='http://www.faq-o-matic.net/2010/09/28/iir-admin-tech-talk-2010-folien-und-skripts-meiner-ad-sessions/' rel='bookmark' title='IIR Admin Tech Talk 2010: Folien und Skripts meiner AD-Sessions'>IIR Admin Tech Talk 2010: Folien und Skripts meiner AD-Sessions</a> <small>Am 27. und 28. September 2010 fand in Oberursel bei...</small></li>
<li><a href='http://www.faq-o-matic.net/2002/09/09/wie-kann-ich-den-pfad-zum-home-folder-mehrerer-benutzer-aendern/' rel='bookmark' title='Wie kann ich den Pfad zum Home-Folder mehrerer Benutzer (oder auch andere Werte) &#228;ndern?'>Wie kann ich den Pfad zum Home-Folder mehrerer Benutzer (oder auch andere Werte) &#228;ndern?</a> <small>Unter Windows 2000&nbsp;war es leider nicht m&ouml;glich, bei mehreren Objekten...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/dsadd-quota.jpg" title="dsadd-quota.jpg"></a>In vielen Active-Directory-Umgebungen wird die M&ouml;glichkeit genutzt, bestimmten Mitarbeitern Berechtigungen auf das Active Directory zu geben. So k&ouml;nnte man zum Beispiel dem Azubi  der IT-Abteilung das Recht einr&auml;umen, neue Benutzer in Active Directory anzulegen. Dadurch kann der Azubi also keinen Schaden anrichten. Er kann ja nur neue Benutzer anlegen &#8230;</p>
<p><span id="more-719"></span>Leider bringt man dadurch sein Active Directory auch in Gefahr. Durch dieses Recht k&ouml;nnte eine Person, die entsprechende Berechtigungen besitzt, eine unbegrenzte Anzahl von Objekten anlegen. Das hei&szlig;t also, sie kann die Datenbank durch unbedarfte Experimente oder mit b&ouml;sen Absichten bis zum Platzen f&uuml;llen. Dadurch w&uuml;rde dann ein erh&ouml;htes Replikationsaufkommen zwischen den Dom&auml;nencontrollern auftreten. Die Folge w&auml;ren dann erh&ouml;hte Replikationslatenzen. Durch diese Latenzen k&ouml;nnte es passieren, dass wichtige Informationen versp&auml;tet auf andere Dom&auml;nencontroller repliziert werden. Ein weiteres m&ouml;gliches Szenario w&auml;re das &Uuml;berlaufen der Festplattenpartition, auf der sich die Active Directory Datenbank befindet. Wie einfach so ein Angriff zu realisieren ist, demonstriert folgendes Skript:</p>
<pre><em>

set objRootDSE = GetObject("LDAP://rootDSE")

set objOU = GetObject("LDAP://ou=OU-Delegiert," &amp; objRootDSE.Get("defaultNamingContext"))

For i=1 To 1000000

  set objUser = objOU.Create("User","cn=BenutzerNr" &amp; i)

  objUser.Put "sAmAccountName", "BenutzerNr" &amp; i

  objUser.Put  "givenName","Testbenutzer"

  objUser.Put "mail","hallo@hallo.de"

  objUser.Put "telePhoneNumber", "++49 (351) 123454678"

  objUser.Put "sn", "Test"

  objUser.Put "wwwHomePage","www.faq-o-matic.net"

objUser.SetInfo

objUser.AccountDisabled = False

objUser.SetPassword "Geheim$$2008"

objUser.Setinfo

next

</em></pre>
<p>Durch dieses Skript werden so ganz nebenbei 1.000.000 Benutzerobjekte angelegt. Diese belasten nat&uuml;rlich unn&ouml;tigerweise die Active-Directory-Datenbank. Was kann man aber dagegen tun, um solche DoS-Attacken auf das AD zu verhindern?</p>
<p>Seit Windows 2003 gibt es die M&ouml;glichkeit, Kontingente auf das Active Directory zu vergeben. Dadurch kann ein Administrator bestimmen, wie viele Objekte ein Benutzer oder auch eine Sicherheitsgruppe im AD anlegen kann.</p>
<p>Wie funktioniert das Ganze aber? Microsoft stellt f&uuml;r die Verwaltung bzw. Einrichtung von Kontingenten leider kein grafisches Verwaltungsprogramm zur Verf&uuml;gung. Um Kontingente auf eine Verzeichnispartition zu vergeben, muss der Administrator die Kommandozeile bem&uuml;hen. Wie sieht das nun in der Praxis aus?</p>
<p>Nehmen wir einmal an, dass in der AD-Dom&auml;ne „faq-o-matic.net“ die OU „OU-Delegiert“ existiert. Auf diese OU hat der Benutzer „Paul Schmidt“ das Recht bekommen, neue Benutzer anzulegen.</p>
<p>Mit dem Kommandozeilenprogramm „dsadd quota“ kann der Administrator dem Benutzer jetzt ein Kontingent einrichten.</p>
<p><em> <a href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/dsadd-quota.jpg" title="dsadd-quota.jpg"><img src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/dsadd-quota.thumbnail.jpg" alt="dsadd-quota.jpg" /></a></em></p>
<p><em>dsadd quota -part dc=faq-o-matic,dc=net –acct  faq-o-matic\p.schmidt -qlimit 500<br />
</em><br />
Durch dieses Kontingent ist jetzt der Benutzer Paul Schmidt auf das Anlegen von 500 Benutzern beschr&auml;nkt.<br />
Wie kann man jetzt aber die bereits angelegten Kontingente einsehen? F&uuml;r diese Aufgabe kann man zum einen das Snapin „Active Directory Benutzer und Computer“ benutzen oder auch die Kommandozeile bem&uuml;hen.</p>
<p><a href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/aduc_quota.jpg" title="aduc_quota.jpg"><img src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/aduc_quota.thumbnail.jpg" alt="aduc_quota.jpg" /></a> </p>
<p>Um alle Kontingente einzusehen, reicht ein:</p>
<p><em>dsquery quota</em></p>
<p> <a href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/dsquery_quota.jpg" title="dsquery_quota.jpg"><img src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/dsquery_quota.thumbnail.jpg" alt="dsquery_quota.jpg" /></a></p>
<p>Wer es etwas genauer wissen will, kann die Kommandozeile noch erweitern.</p>
<p><em>dsquery quota | dsget quota -dn -acct -qlimit</em></p>
<p>Wenn man jetzt noch einsehen will, wieviel ein Benutzer bereits von seinem Kontingent verbraucht hat, kann man das Kommandozeilenprogramm „dsget“ einsetzen.</p>
<p><a href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/dsget_partition_tobjobowner.jpg" title="dsget_partition_tobjobowner.jpg"><img src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/dsget_partition_tobjobowner.thumbnail.jpg" alt="dsget_partition_tobjobowner.jpg" /></a></p>
<p><em>dsget partition „dc=faq-o-matic,dc=net“ -topobjowner</em></p>
<p>Durch dieses Kommando kann man einsehen, wie viele Objekte ein Benutzer oder eine Gruppe in der angegebenen Partition besitzt. Standardm&auml;&szlig;ig gibt „dsget“ die ersten top zehn Benutzer aus. Man kann hier hinter den Parameter „-topjobowner“ eine Zahl angeben, die beeinflusst, wie viele Benutzer oder Gruppen angezeigt werden. Durch die Angabe von „0“ werden alle Benutzer angezeigt.<br />
<strong>Vorsicht!</strong> Bei der Angabe von „0“ kann der Dom&auml;nencontroller stark ausgelastet werden und die Abfrage kann sehr viel Zeit in Anspruch nehmen.</p>
<p>Was ist aber, wenn Paul vorhandene Objekte gel&ouml;scht hat? Werden diese Objekte auch in das Kontingent mit einbezogen? Die Antwort f&uuml;r diese Frage lautet „jein“. Wenn der Benutzer Objekte l&ouml;scht, dann werden diese zu 100% f&uuml;r die Dauer der Tombstone Lifetime auf sein Kontingent angerechnet. In einer einheitlichen Umgebung unter Windows 2003 SP1, die nicht durch ein Update von Windows 2000 bzw. Windows 2003 installiert wurde, betr&auml;gt die Tombstone Lifetime 180 Tage. Unser Benutzer muss also f&uuml;r 180 Tage auch mit den gel&ouml;schten Objekten leben.<br />
Windows w&auml;re aber nicht Windows, wenn es dort nicht noch eine M&ouml;glichkeit g&auml;be, dieses Problem zu umgehen. Man kann f&uuml;r jede Partition eine globale Einstellung vornehmen, zu wie viel Prozent ein gel&ouml;schtes Objekt in die Kontingentberechnung eingeht. Diese Festlegung kann &uuml;ber die Kommandozeile getroffen werden:</p>
<p><em><a href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/dsmod_partition_qtmbstnwt.jpg" title="dsmod_partition_qtmbstnwt.jpg"><img src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/dsmod_partition_qtmbstnwt.thumbnail.jpg" alt="dsmod_partition_qtmbstnwt.jpg" /></a> </em></p>
<p><em>dsmod partition &#034;dc=faq-o-matic,dc=net&#034; -qtmbstnwt 10</em></p>
<p><strong>ACHTUNG!</strong> Der Parameter „-qtmbstnwt“ ist in der Hilfe von „dsmod partition“ falsch dargestellt. Dort steht als erforderlicher Parameter „-qtmbstawt“. Dieser Eintrag ist falsch!</p>
<p>Was hei&szlig;t das nun in der Praxis:</p>
<p>In der obigen Kommandozeile haben wir also den Prozentsatz f&uuml;r die gel&ouml;schten Objekte in der Dom&auml;nenpartition auf 10 Prozent festgelegt. Wenn unser Nutzer Paul ein Kontingent von 350 Objekten hat, dann kann er 3500 gel&ouml;schte Objekte besitzen, bevor sein Kontingent ersch&ouml;pft ist.</p>
<p>Jetzt kommt nat&uuml;rlich der Test, ob unser oben angelegtes Kontingent auch Wirkung zeigt. Paul wird jetzt das Skript auf unser AD loslassen und damit den Versuch starten, unser AD lahm zu legen. Kurz nachdem Paul das Skript ausgef&uuml;hrt hat, schmettert ihm das Active Directory eine Fehlermeldung entgegen.</p>
<p> <a href="http://www.faq-o-matic.net/wp-content/uploads/2008/01/aduc_skript.jpg" title="aduc_skript.jpg"><img src="http://www.faq-o-matic.net/wp-content/uploads/2008/01/aduc_skript.thumbnail.jpg" alt="aduc_skript.jpg" /></a></p>
<p>Pauls Kontingent wurde ersch&ouml;pft und er kann keine weiteren Objekte im Active Directory anlegen. Dadurch wurde Pauls Angriff auf das AD verhindert.</p>
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2006/08/26/dhcp-server-autorisieren-ohne-organisations-admin-rechte/' rel='bookmark' title='DHCP-Server autorisieren ohne Organisations-Admin-Rechte'>DHCP-Server autorisieren ohne Organisations-Admin-Rechte</a> <br /><small>Um in einer Active-Directory-Umgebung einen auf Windows 2000/2003 basierenden DHCP-Server...</small></li>
<li><a href='http://www.faq-o-matic.net/2010/09/28/iir-admin-tech-talk-2010-folien-und-skripts-meiner-ad-sessions/' rel='bookmark' title='IIR Admin Tech Talk 2010: Folien und Skripts meiner AD-Sessions'>IIR Admin Tech Talk 2010: Folien und Skripts meiner AD-Sessions</a> <br /><small>Am 27. und 28. September 2010 fand in Oberursel bei...</small></li>
<li><a href='http://www.faq-o-matic.net/2002/09/09/wie-kann-ich-den-pfad-zum-home-folder-mehrerer-benutzer-aendern/' rel='bookmark' title='Wie kann ich den Pfad zum Home-Folder mehrerer Benutzer (oder auch andere Werte) &#228;ndern?'>Wie kann ich den Pfad zum Home-Folder mehrerer Benutzer (oder auch andere Werte) &#228;ndern?</a> <br /><small>Unter Windows 2000&nbsp;war es leider nicht m&ouml;glich, bei mehreren Objekten...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2008/01/13/maulkorb-fuer-den-ou-admin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kostenstelle in AD integrieren</title>
		<link>http://www.faq-o-matic.net/2007/02/27/kostenstelle-in-ad-integrieren/</link>
		<comments>http://www.faq-o-matic.net/2007/02/27/kostenstelle-in-ad-integrieren/#comments</comments>
		<pubDate>Tue, 27 Feb 2007 15:00:00 +0000</pubDate>
		<dc:creator>Norbert Fehlauer</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[AD: Daten bearbeiten]]></category>
		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://faq-o-matic.net.dd18938.kasserver.com/2007/02/27/kostenstelle-in-ad-integrieren/</guid>
		<description><![CDATA[Basierend auf dem Artikel &#034;Eigene Funktionen in die AD-Tools integrieren&#034; von Nils habe ich das dort vef&#252;gbare Beispiel erweitert. Zweck dieser Erweiterung ist es, das extensionAttribute3 modifzieren zu k&#246;nnen. Im konkreten Fall wird dieses Attribut genutzt, um eine Kostenstellenzuordnung f&#252;r eine Cisco-VOIP-Telefonanlage zu schaffen. Ziel ist es, diese Kostenstelle mittels Kontextmen&#252; direkt &#252;ber das Nutzerobjekt [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2003/08/09/eigene-funktionen-in-die-ad-tools-integrieren/' rel='bookmark' title='Eigene Funktionen in die AD-Tools integrieren'>Eigene Funktionen in die AD-Tools integrieren</a> <small>Das Schema ist erweitert worden. Wie k&ouml;nnen die neuen Attribute...</small></li>
<li><a href='http://www.faq-o-matic.net/2003/08/10/wie-kann-ich-meine-benutzer-als-nachname-vorname-anzeigen/' rel='bookmark' title='Wie kann ich meine Benutzer als &quot;Nachname, Vorname&quot; anzeigen?'>Wie kann ich meine Benutzer als &quot;Nachname, Vorname&quot; anzeigen?</a> <small>In der Standardeinstellung werden in Active Directory die Namen von...</small></li>
<li><a href='http://www.faq-o-matic.net/2005/07/27/wie-frage-ich-gezielt-benutzerobjekte-ab/' rel='bookmark' title='Wie frage ich gezielt Benutzerobjekte ab?'>Wie frage ich gezielt Benutzerobjekte ab?</a> <small>Der LDAP-Standard sieht ungl&uuml;cklicherweise vor, dass die Objektklasse &quot;user&quot; nicht...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="/wp-content/uploads/business/719069.jpg"><img border="0" align="left" src="/wp-content/uploads/business/719069.jpg" /></a>Basierend auf dem Artikel <a href="http://www.faq-o-matic.net/2003/08/09/eigene-funktionen-in-die-ad-tools-integrieren/">&#034;Eigene Funktionen in die AD-Tools integrieren&#034; von Nils</a> habe ich das dort vef&uuml;gbare Beispiel erweitert. Zweck dieser Erweiterung ist es, das extensionAttribute3 modifzieren zu k&ouml;nnen. Im konkreten Fall wird dieses Attribut genutzt, um eine Kostenstellenzuordnung f&uuml;r eine Cisco-VOIP-Telefonanlage zu schaffen.</p>
<p><span id="more-617"></span></p>
<p>Ziel ist es, diese Kostenstelle mittels Kontextmen&uuml; direkt &uuml;ber das Nutzerobjekt in Active Directory modifizieren zu k&ouml;nnen. Hierzu z&auml;hlt auch die M&ouml;glichkeit, einen einmal gesetzten Wert auch komplett l&ouml;schen zu k&ouml;nnen.</p>
<p>Das folgende Skript speichert man als extension3.hta z. B. unter c:\windows\system32 ab.</p>
<p>Die L&ouml;schroutine l&ouml;scht den gesetzten Wert ohne nochmalige Sicherheitsabfrage. Also bitte aufpassen. <img src='http://www.faq-o-matic.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>&#8212;&#8212;&#8211; Extension3.hta &#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<ol>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">&lt;HTML&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">&lt;HEAD&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  &lt;TITLE&gt;&lt;/TITLE&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  &lt;HTA:APPLICATION ID=<span style="color: #ff0000">&#034;oHTA&#034;</span>&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  &lt;META <span style="color: #b1b100">NAME</span>=<span style="color: #ff0000">&#034;author&#034;</span> CONTENT=<span style="color: #ff0000">&#034;Nils Kaczenski und Norbert Fehlauer&#034;</span>&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">&lt;/HEAD&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">&lt;BODY onload=<span style="color: #ff0000">&#034;start();&#034;</span>&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">&lt;H2 ID=<span style="color: #ff0000">&#034;head&#034;</span>&gt;&lt;/H2&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">&lt;TABLE&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  &lt;TR&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  &lt;TD&gt;Benutzer:&lt;/TD&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  &lt;TD&gt;&lt;P ID=<span style="color: #ff0000">&#034;anzeige&#034;</span>&gt;&lt;/P&gt;&lt;/TD&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  &lt;/TR&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  &lt;TR&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  &lt;TD&gt;<span style="color: #66cc66">[</span>K<span style="color: #66cc66">]</span>ostenstelle&lt;/TD&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  &lt;TD&gt;&lt;input ID=<span style="color: #ff0000">&#034;Kosten&#034;</span> accesskey=<span style="color: #ff0000">&#034;k&#034;</span>&gt;&lt;/TD&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  &lt;/TR&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  &lt;TR&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  &lt;TD&gt;&lt;button onclick=<span style="color: #ff0000">&#034;eintragen();&#034;</span>accesskey=<span style="color: #ff0000">&#034;e&#034;</span>&gt;&lt;U&gt;E&lt;/U&gt;intragen&lt;/button&gt;&lt;/TD&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  &lt;TD&gt;&lt;button onclick=<span style="color: #ff0000">&#034;window.close();&#034;</span>accesskey=<span style="color: #ff0000">&#034;s&#034;</span>&gt;&lt;U&gt;S&lt;/U&gt;chlie&szlig;en&lt;/button&gt;&lt;/TD&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  &lt;TD&gt;&lt;button onclick=<span style="color: #ff0000">&#034;loeschen();&#034;</span>accesskey=<span style="color: #ff0000">&#034;l&#034;</span>&gt;&lt;U&gt;L&lt;/U&gt;&ouml;schen&lt;/button&gt;&lt;/TD&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  &lt;/TR&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">&lt;/TABLE&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">&lt;BR clear=<span style="color: #ff0000">&#034;all&#034;</span>&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">&lt;HR&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">&lt;P Class=<span style="color: #ff0000">&#034;klein&#034;</span>&gt;© <span style="color: #cc66cc">2003</span>-<span style="color: #cc66cc">2007</span> Nils Kaczenski und Norbert Fehlauer &#8211; keine Gew&auml;hr! Nutzung auf eigene Gefahr!&lt;/P&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">&lt;SCRIPT language=<span style="color: #ff0000">&#034;VBScript&#034;</span>&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace"><span style="color: #b1b100">Dim</span> rootDSE</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace"><span style="color: #b1b100">Dim</span> objUsr</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace"><span style="color: #b1b100">dim</span> strUserDN</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace"><span style="color: #b1b100">const</span> ADS_PROPERTY_CLEAR = <span style="color: #cc66cc">1</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">strAdsPath = <span style="color: #ff0000">&#034;&#034;</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">strTitel = <span style="color: #ff0000">&#034;Kostenstelle eintragen&#034;</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace"><span style="color: #b1b100">Function</span> auswerten<span style="color: #66cc66">(</span><span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  strText = oHTA.<span>CommandLine</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #808080">&#039; CommandLine enth&auml;lt, durch Blanks getrennt:</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #808080">&#039; &#8211; Pfad der HTA-Datei (in Anf&uuml;hrungsstrichen)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #808080">&#039; &#8211; LDAP-Pfad des AD-Objekts (fallweise mit Anf&uuml;hrungsstrichen; inkl.Serverangabe)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #808080">&#039; &#8211; Objektklasse &#039; Das macht die Auswertung etwas aufw&auml;ndig:</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  intPosUser = <span style="color: #b1b100">InStrRev</span><span style="color: #66cc66">(</span>strText,<span style="color: #ff0000">&#034; user&#034;</span><span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  intPosLDAP = <span style="color: #b1b100">inStr</span><span style="color: #66cc66">(</span>strText, <span style="color: #ff0000">&#034;LDAP://&#034;</span><span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">if</span> intPosUser &lt;&gt; <span style="color: #cc66cc">0</span> <span style="color: #b1b100">then</span> <span style="color: #808080">&#039;ist ein Benutzerobjekt</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  auswerten = <span style="color: #b1b100">mid</span><span style="color: #66cc66">(</span>strText, intPosLDAP, intPosUser &#8211; intPosLDAP<span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  auswerten = replace<span style="color: #66cc66">(</span><span style="color: #b1b100">trim</span><span style="color: #66cc66">(</span>auswerten<span style="color: #66cc66">)</span>,<span style="color: #ff0000">&#034;&#034;</span><span style="color: #ff0000">&#034;&#034;</span>,<span style="color: #ff0000">&#034;&#034;</span><span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #808080">&#039; Jetzt sind G&auml;nsef&uuml;&szlig;chen und Leerzeichen am Anfang/Ende weg</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #808080">&#039; auswertung enth&auml;lt nur noch den distinguishedName,</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #808080">&#039; der weiter verwendet werden kann</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">else</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">msgBox</span> <span style="color: #ff0000">&#034;Kein User angegeben!&#034;</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">exit</span> <span style="color: #b1b100">function</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">end</span> <span style="color: #b1b100">if</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace"><span style="color: #b1b100">End</span> <span style="color: #b1b100">Function</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace"><span style="color: #b1b100">Sub</span> start<span style="color: #66cc66">(</span><span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #808080">&#039; Funktion:</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #808080">&#039; Eingabeparameter:</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #808080">&#039; Kommentar:</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  window.<span>resizeTo</span> <span style="color: #cc66cc">400</span>,<span style="color: #cc66cc">200</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  document.<span>title</span> = strTitel</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  arrText = auswerten</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  strUserDN = auswerten</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">if</span> strUserDN = <span style="color: #ff0000">&#034;&#034;</span> <span style="color: #b1b100">then</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  document.<span>all</span>.<span>anzeige</span>.<span>innerText</span> = <span style="color: #ff0000">&#034;keine Argumente&#034;</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">Exit</span> <span style="color: #b1b100">Sub</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">End</span> <span style="color: #b1b100">If</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">Set</span> rootDSE = <span style="color: #b1b100">GetObject</span><span style="color: #66cc66">(</span><span style="color: #ff0000">&#034;LDAP://RootDSE&#034;</span><span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  strDomainname = rootDSE.<span style="color: #b1b100">Get</span><span style="color: #66cc66">(</span><span style="color: #ff0000">&#034;defaultnamingcontext&#034;</span><span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">Set</span> domain = <span style="color: #b1b100">GetObject</span><span style="color: #66cc66">(</span><span style="color: #ff0000">&#034;LDAP://&#034;</span> &amp; strDomainname<span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">Set</span> objUsr = <span style="color: #b1b100">GetObject</span><span style="color: #66cc66">(</span>strUserDN<span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  strName = objUsr.<span style="color: #b1b100">get</span><span style="color: #66cc66">(</span><span style="color: #ff0000">&#034;displayName&#034;</span><span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  document.<span>title</span> = strTitel &amp; <span style="color: #ff0000">&#034;: &#034;</span> &amp; strSamName</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">On</span> <span style="color: #b1b100">Error</span> <span style="color: #b1b100">Resume</span> <span style="color: #b1b100">Next</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  strKostenstelle = objUsr.<span style="color: #b1b100">get</span><span style="color: #66cc66">(</span><span style="color: #ff0000">&#034;extensionAttribute3&#034;</span><span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">if</span> <span style="color: #b1b100">err</span>.<span>number</span> &lt;&gt; <span style="color: #cc66cc">0</span> <span style="color: #b1b100">then</span> <span style="color: #b1b100">Err</span>.<span>clear</span> <span style="color: #808080">&#039; kein Eintrag da!</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">On</span> <span style="color: #b1b100">Error</span> <span style="color: #b1b100">Goto</span> <span style="color: #cc66cc">0</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  document.<span>all</span>.<span>anzeige</span>.<span>innerText</span> = strName</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">if</span> strKostenstelle &lt;&gt; <span style="color: #ff0000">&#034;&#034;</span> <span style="color: #b1b100">then</span> document.<span>all</span>.<span>Kosten</span>.<span>value</span> = strKostenstelle</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace"><span style="color: #b1b100">End</span> <span style="color: #b1b100">Sub</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace"><span style="color: #b1b100">Sub</span> eintragen<span style="color: #66cc66">(</span><span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #808080">&#039; Funktion:</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #808080">&#039; Eingabeparameter:</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #808080">&#039; Kommentar:</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">If</span> strUserDN = <span style="color: #ff0000">&#034;&#034;</span> <span style="color: #b1b100">Then</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">MsgBox</span> <span style="color: #ff0000">&#034;Kein User angegeben!&#034;</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">Exit</span> <span style="color: #b1b100">Sub</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">End</span> <span style="color: #b1b100">If</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  strCheck = document.<span>all</span>.<span>Kosten</span>.<span>value</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">If</span> <span style="color: #b1b100">IsNumeric</span><span style="color: #66cc66">(</span>strCheck<span style="color: #66cc66">)</span> <span style="color: #b1b100">Then</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  objUsr.<span style="color: #b1b100">Put</span> <span style="color: #ff0000">&#034;extensionAttribute3&#034;</span>, strCheck</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  objUsr.<span>SetInfo</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">MsgBox</span> <span style="color: #ff0000">&#034;Kostenstelle eingetragen!&#034;</span>, <span style="color: #b1b100">vbInformation</span>, strTitle</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  window.<span style="color: #b1b100">close</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">Else</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">MsgBox</span> <span style="color: #ff0000">&#034;Keine Zahl angegeben: &#034;</span> &amp; strCheck, <span style="color: #b1b100">vbCritical</span>, strTitle</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">End</span> <span style="color: #b1b100">If</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace"><span style="color: #b1b100">End</span> <span style="color: #b1b100">Sub</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace"><span style="color: #b1b100">Sub</span> loeschen<span style="color: #66cc66">(</span><span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #808080">&#039; Funktion:</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #808080">&#039; Eingabeparameter:</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #808080">&#039; Kommentar:</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">If</span> strUserDN = <span style="color: #ff0000">&#034;&#034;</span> <span style="color: #b1b100">Then</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">MsgBox</span> <span style="color: #ff0000">&#034;Kein User angegeben!&#034;</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">Exit</span> <span style="color: #b1b100">Sub</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">End</span> <span style="color: #b1b100">If</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  objUsr.<span>PutEx</span> ADS_PROPERTY_CLEAR, <span style="color: #ff0000">&#034;extensionAttribute3&#034;</span>, <span style="color: #b1b100">vbNullString</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  objUsr.<span>SetInfo</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  <span style="color: #b1b100">MsgBox</span> <span style="color: #ff0000">&#034;Kostenstelle gel&ouml;scht!&#034;</span>, <span style="color: #b1b100">vbInformation</span>, strTitle</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">  window.<span style="color: #b1b100">close</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace"><span style="color: #b1b100">End</span> <span style="color: #b1b100">Sub</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">&lt;/SCRIPT&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">&lt;/BODY&gt;</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">&lt;/HTML&gt;</li>
</ol>
<p>&#8212;&#8212;&#8211; Extension3.hta &#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Mit folgendem Script wird die extension3.hta im Rechtsklickmen&uuml; verf&uuml;gbar. Hierzu adminmenu.vbs ausf&uuml;hren. Der Wert &#034;strValue&#034;, der angibt, wie der Men&uuml;punkt hei&szlig;en soll, muss entsprechend angepasst werden.<br />
&#8212;&#8212;&#8212; Adminmenu.vbs &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<ol>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace"><span style="color: #b1b100">Set</span> root= <span style="color: #b1b100">GetObject</span><span style="color: #66cc66">(</span><span style="color: #ff0000">&#034;LDAP://rootDSE&#034;</span><span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">strConfig = root.<span style="color: #b1b100">Get</span><span style="color: #66cc66">(</span><span style="color: #ff0000">&#034;configurationNamingContext&#034;</span><span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">strPath = <span style="color: #ff0000">&#034;LDAP://cn=user-Display,cn=407,cn=DisplaySpecifiers,&#034;</span> &amp; strConfig</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace"><span style="color: #b1b100">Set</span> obj= <span style="color: #b1b100">GetObject</span><span style="color: #66cc66">(</span>strPath<span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">strValue = <span style="color: #ff0000">&#034;5,Kostenstelle modifizieren,Extension3.hta&#034;</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">arrValue = <span style="color: #b1b100">Array</span><span style="color: #66cc66">(</span>strValue<span style="color: #66cc66">)</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">obj.<span>PutEx</span> <span style="color: #cc66cc">3</span>, <span style="color: #ff0000">&#034;adminContextMenu&#034;</span>, arrValue</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace">obj.<span>SetInfo</span></li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace"><span style="color: #b1b100">msgBox</span> <span style="color: #ff0000">&#034;Kontextmen&uuml;eintrag hinzugef&uuml;gt: &#034;</span> &amp; strValue</li>
</ol>
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2003/08/09/eigene-funktionen-in-die-ad-tools-integrieren/' rel='bookmark' title='Eigene Funktionen in die AD-Tools integrieren'>Eigene Funktionen in die AD-Tools integrieren</a> <br /><small>Das Schema ist erweitert worden. Wie k&ouml;nnen die neuen Attribute...</small></li>
<li><a href='http://www.faq-o-matic.net/2003/08/10/wie-kann-ich-meine-benutzer-als-nachname-vorname-anzeigen/' rel='bookmark' title='Wie kann ich meine Benutzer als &quot;Nachname, Vorname&quot; anzeigen?'>Wie kann ich meine Benutzer als &quot;Nachname, Vorname&quot; anzeigen?</a> <br /><small>In der Standardeinstellung werden in Active Directory die Namen von...</small></li>
<li><a href='http://www.faq-o-matic.net/2005/07/27/wie-frage-ich-gezielt-benutzerobjekte-ab/' rel='bookmark' title='Wie frage ich gezielt Benutzerobjekte ab?'>Wie frage ich gezielt Benutzerobjekte ab?</a> <br /><small>Der LDAP-Standard sieht ungl&uuml;cklicherweise vor, dass die Objektklasse &quot;user&quot; nicht...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2007/02/27/kostenstelle-in-ad-integrieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Active-Directory-Massenoperationen mit AdMod und AdFind</title>
		<link>http://www.faq-o-matic.net/2006/11/29/active-directory-massenoperationen-mit-admod-und-adfind/</link>
		<comments>http://www.faq-o-matic.net/2006/11/29/active-directory-massenoperationen-mit-admod-und-adfind/#comments</comments>
		<pubDate>Wed, 29 Nov 2006 14:39:00 +0000</pubDate>
		<dc:creator>Nils Kaczenski</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[AD: Daten bearbeiten]]></category>
		<category><![CDATA[AD: Erweiterte Abfragen]]></category>
		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://faq-o-matic.net.dd18938.kasserver.com/2006/11/29/active-directory-massenoperationen-mit-admod-und-adfind/</guid>
		<description><![CDATA[Windows Server 2003 enth&#228;lt die so genannten &#34;ds*-Tools&#34;: Eine Sammlung von Kommandozeilenprogrammen, die Massenoperationen an Active Directory zulassen. Zu diesen Tools z&#228;hlen dsquery (Abfragen des AD), dsget (Zugriff auf bestimmte Objekte erhalten), dsadd (Objekte erzeugen), dsmove (Objekte verschieben), dsmod (Objekte manipulieren) und andere. Das Interessante ist, dass diese Tools das Piping unterst&#252;tzen, d.h. man kann [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2011/08/29/leichenzhlung-in-active-directory/' rel='bookmark' title='Leichenz&auml;hlung in Active Directory'>Leichenz&auml;hlung in Active Directory</a> <small>Unter den Fragen, die mir oft gestellt werden, nimmt diese...</small></li>
<li><a href='http://www.faq-o-matic.net/2010/03/31/fallen-und-auswege-beim-recovery-von-active-directory/' rel='bookmark' title='Fallen und Auswege beim Recovery von Active Directory'>Fallen und Auswege beim Recovery von Active Directory</a> <small>Der Microsoft-Supportmitarbeiter Herbert Mauerer hat einen sehr lesenswerten Artikel zum...</small></li>
<li><a href='http://www.faq-o-matic.net/2010/04/06/liza-berechtigungen-in-active-directory-analysieren/' rel='bookmark' title='Liza: Berechtigungen in Active Directory analysieren'>Liza: Berechtigungen in Active Directory analysieren</a> <small>Philipp F&ouml;ckeler hat ein Programm namens “Liza” ver&ouml;ffentlicht, mit dem...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="/wp-content/uploads/leute/leute0001.jpg"><img src="/wp-content/uploads/leute/leute0001.jpg" align="left" border="0" alt="" /></a>Windows Server 2003 enth&auml;lt die so genannten &quot;ds*-Tools&quot;: Eine Sammlung von Kommandozeilenprogrammen, die Massenoperationen an Active Directory zulassen. Zu diesen Tools z&auml;hlen dsquery (Abfragen des AD), dsget (Zugriff auf bestimmte Objekte erhalten), dsadd (Objekte erzeugen), dsmove (Objekte verschieben), dsmod (Objekte manipulieren) und andere. Das Interessante ist, dass diese Tools das Piping unterst&uuml;tzen, d.h. man kann etwa die Ausgabe einer dsquery-Abfrage direkt an dsmod verf&uuml;ttern, um alle gefundenen Objekte zu bearbeiten.</p>
<p><span id="more-614"></span>
<p>Doch die ds*-Tools sind nicht immer das Nonplusultra. Viele Operationen erfordern, dass die Dom&auml;ne oder der Forest im WIndows-2003-Modus arbeiten, was nicht immer gegeben ist. &Auml;ltere Umgebungen ohne Windows Server 2003 k&ouml;nnen gar nicht davon profitieren. Und schlie&szlig;lich gibt es auch einige Begrenzungen innerhalb der Tools. Hier kommt joeware.net ins Spiel.</p>
<p>Joe Richards, amerikanischer MVP f&uuml;r Active Directory, hat zwei Werkzeuge entwickelt, die in einigen Situationen bessere Dienste leisten als die ds-Pendants: AdFind (zum Durchsuchen des Active Directory) und AdMod (zum Bearbeiten von Objekten). Die Nutzung ist recht einfach und wird auf Joes Webseite <a href="http://www.joeware.net/">www.joeware.net</a> gut erl&auml;utert. Hier die Links:</p>
<ul>
<li>AdFind: <a href="http://www.joeware.net/win/free/tools/adfind.htm">http://www.joeware.net/win/free/tools/adfind.htm</a>
<li>AdMod: <a href="http://www.joeware.net/win/free/tools/admod.htm">http://www.joeware.net/win/free/tools/admod.htm</a>
<li>Noch mehr Joeware: <a href="http://www.joeware.net/win/free/all.htm">http://www.joeware.net/win/free/all.htm</a></li>
</ul>
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2011/08/29/leichenzhlung-in-active-directory/' rel='bookmark' title='Leichenz&auml;hlung in Active Directory'>Leichenz&auml;hlung in Active Directory</a> <br /><small>Unter den Fragen, die mir oft gestellt werden, nimmt diese...</small></li>
<li><a href='http://www.faq-o-matic.net/2010/03/31/fallen-und-auswege-beim-recovery-von-active-directory/' rel='bookmark' title='Fallen und Auswege beim Recovery von Active Directory'>Fallen und Auswege beim Recovery von Active Directory</a> <br /><small>Der Microsoft-Supportmitarbeiter Herbert Mauerer hat einen sehr lesenswerten Artikel zum...</small></li>
<li><a href='http://www.faq-o-matic.net/2010/04/06/liza-berechtigungen-in-active-directory-analysieren/' rel='bookmark' title='Liza: Berechtigungen in Active Directory analysieren'>Liza: Berechtigungen in Active Directory analysieren</a> <br /><small>Philipp F&ouml;ckeler hat ein Programm namens “Liza” ver&ouml;ffentlicht, mit dem...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2006/11/29/active-directory-massenoperationen-mit-admod-und-adfind/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

