<?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; VBScript</title>
	<atom:link href="http://www.faq-o-matic.net/kategorien/scripting/vbscript/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>IP-Konfigurationen auslesen und zentral sammeln</title>
		<link>http://www.faq-o-matic.net/2012/02/01/ip-konfigurationen-auslesen-und-zentral-sammeln/</link>
		<comments>http://www.faq-o-matic.net/2012/02/01/ip-konfigurationen-auslesen-und-zentral-sammeln/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 05:19:00 +0000</pubDate>
		<dc:creator>Nils Kaczenski</dc:creator>
				<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/2011/12/07/ip-konfigurationen-auslesen-und-zentral-sammeln/</guid>
		<description><![CDATA[Die geneigte Administratorin ben&#246;tigt oft eine &#220;bersicht &#252;ber die IP-Konfigurationen ihrer Rechner. Neben der reinen Adressliste z&#228;hlen dazu h&#228;ufig auch die eingetragenen DNS-Server – etwa dann, wenn ein alter Server durch einen neuen ersetzt und dieser dann bei den Clients eingetragen werden muss. Eine WMI-basierte Skriptl&#246;sung kann dabei helfen. Unser Skript “Bert” verbindet sich per [...]
Keine verwandten Beiträge.]]></description>
			<content:encoded><![CDATA[<p><img src="http://vg01.met.vgwort.de/na/a5719f2f74ec4a9eb36efd6aad9b765a" alt="" width="1" height="1" align="left" />Die geneigte Administratorin ben&ouml;tigt oft eine &Uuml;bersicht &uuml;ber die IP-Konfigurationen ihrer Rechner. Neben der reinen Adressliste z&auml;hlen dazu h&auml;ufig auch die eingetragenen DNS-Server – etwa dann, wenn ein alter Server durch einen neuen ersetzt und dieser dann bei den Clients eingetragen werden muss. Eine WMI-basierte Skriptl&ouml;sung kann dabei helfen.</p>
<p>Unser Skript “Bert” verbindet sich per WMI (Windows Management Instrumentation) mit einem Windows-System und liest die wichtigen Eckdaten der IP-Konfiguration aus. Diese zeigt er als separierte Liste auf der Kommandozeile an. Leitet man diese Ausgabe in eine zentrale Datei auf einem Server um, so entsteht eine CSV-Datei, aus der man etwa mit Excel die IP-Konfigurationen direkt verarbeiten kann. Das Skript funktioniert lokal und &uuml;ber das Netzwerk.</p>
Note: There is a file embedded within this post, please visit this post to download the file.
<p><span id="more-3633"></span></p>
<p>Syntax und Verwendung</p>
<p>Die Grundsyntax von Bert sieht folgenderma&szlig;en aus:</p>
<pre>cscript //nologo Bert.vbs [Rechner] /header:[yes|no]</pre>
<p>Es handelt sich um ein Konsolenskript, daher muss es mit <em>cscript</em> aufgerufen werden. Der Schalter <em>“//nologo”</em> unterdr&uuml;ckt die Ausgabe der WSH-Informationen, sodass nur die eigentliche Ausgabe des Skripts erscheint. Mit dem Schalter<em> “/header”</em> gibt man an, ob die Spalten&uuml;berschriften in der Ausgabe erscheinen sollen. L&auml;sst man diese nur beim ersten Rechner ausgeben und unterdr&uuml;ckt sie bei allen anderen, so kann man die Ausgabe in einer einzigen Datei sammeln, die dann einmalig mit den Spalten&uuml;berschriften beginnt.</p>
<p>Das Skript erfasst folgende Daten:</p>
<ul>
<li>Computername</li>
<li>Adaptername</li>
<li>MAC-Adresse</li>
<li>DHCP-Nutzung</li>
<li>IP-Adressen</li>
<li>DNS-Server</li>
</ul>
<p>Gibt man keinen Rechnernamen an, so wertet Bert die IP-Konfiguration des lokalen Rechners aus. Wenn man einen entfernten Rechner &uuml;ber das Netzwerk auswerten m&ouml;chte, ben&ouml;tigt man dort Administratorrechte (das ist bei lokaler Ausf&uuml;hrung nicht n&ouml;tig), oder man muss die WMI-Berechtigungen auf dem Remote-System bearbeiten. Au&szlig;erdem darf keine Firewall die WMI-Schnittstelle blockieren.</p>
<p>Eine zentrale Sammlung der Konfigurationen in der Datei “IP-Daten.txt” in einer Dateifreigabe zeigt folgendes Beispiel:</p>
<pre>cscript //nologo C:\Pfad\Bert.vbs DC01 /header:yes &gt; \\SERVER007\IPData$\IP-Daten.txt
cscript //nologo C:\Pfad\Bert.vbs EX01 /header:no &gt;&gt; \\SERVER007\IPData$\IP-Daten.txt
cscript //nologo C:\Pfad\Bert.vbs SQL01 /header:no &gt;&gt; \\SERVER007\IPData$\IP-Daten.txt</pre>
<p>Um die Einschr&auml;nkungen bei der Remote-Auswertung zu umgehen, kann man Bert auch aus einem Start- oder Logonskript aufrufen. Da normale Anwender die WMI-Schnittstelle lokal aufrufen d&uuml;rfen, sind hierzu keine besonderen Benutzerrechte n&ouml;tig. In diesem Fall muss man darauf achten, dass f&uuml;r die Anwender (bei Logonskripts) bzw. f&uuml;r die Computerkonten (bei Startskripts) Schreibrechte auf die Sammel-Datei bestehen.</p>
<p>Um beim Einsatz per Logonskript Schreibkonflikte durch gleichzeitigen Zugriff auf die Zieldatei zu vermeiden, kann man z.B. &uuml;ber folgendes Batch die Daten des lokalen Rechners in jeweils eine eigene Datei schreiben:</p>
<pre>@echo off
rem Schreibt die IP-Grundkonfiguration des Rechners in eine Textdatei</pre>
<pre>SET Target=\\SERVER\IPData$\Clients\%computername%.txt
SET Bert=\\SERVER\IPData$\Bert.vbs

COPY %Bert% "%userprofile%"

cscript //nologo "%userprofile%\Bert.vbs" /header:no &gt; %Target%

DEL "%userprofile%\Bert.vbs"</pre>
<p>Dieses Batch kopiert zun&auml;chst die Skriptdatei ins lokale Userprofil, damit es keine Berechtigungsfehler beim Aufruf von einem Share aus gibt. Das Ergebnis der Ausf&uuml;hrung landet dann in einer Textdatei auf einer Dateifreigabe, die den Namen des lokalen Rechners tr&auml;gt. Am ende entfernt das Batch die Skriptdatei wieder vom System.</p>
<p>In der Freigabe liegen dann zahlreiche Dateien &#8211; eine pro Rechner. Um sie nachtr&auml;glich zu einer Datei zusammenzufassen, eignet sich dieses Kommando, das man in einem CMD-Fenster aus dem Ordner ausf&uuml;hrt, wo die Dateien liegen:</p>
<pre>for /F "usebackq" %i in (`dir /b`) do @type %i | find /i ";" &gt;&gt; "IP-Konfigs Clients.txt"</pre>
<p>Keine verwandten Beiträge.</p>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2012/02/01/ip-konfigurationen-auslesen-und-zentral-sammeln/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jos&#233;: Version 3.1</title>
		<link>http://www.faq-o-matic.net/2011/07/06/jos-version-3-1/</link>
		<comments>http://www.faq-o-matic.net/2011/07/06/jos-version-3-1/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 04:00:00 +0000</pubDate>
		<dc:creator>Nils Kaczenski</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Dokumentation]]></category>
		<category><![CDATA[Downloads]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[VBScript]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/2011/07/06/jos-version-3-1/</guid>
		<description><![CDATA[Mein Dokumentationswerkzeug José ist nun in Version 3.1 verf&#252;gbar. Neben einigen Fehlerkorrekturen gibt es ein paar neue Funktionen. Im Einzelnen: Neue Funktionen: Exchange-Schemaversion 2010 SP1 Anzahl Werte bei Multi-Value-Feldern (z.B. Gruppen – die Anzahl Gruppenmitglieder ist so leicht abzulesen) alle DCs der aktuellen Dom&#228;ne in Dom&#228;nen-Info angegeben OUs jetzt mit Angabe der Schachtelungstiefe (erleichtert die [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2009/05/08/jose-22-fehlerkorrektur-und-kleine-ergaenzung/' rel='bookmark' title='José 2.2: Fehlerkorrektur und kleine Erg&auml;nzung'>José 2.2: Fehlerkorrektur und kleine Erg&auml;nzung</a> <small>Soeben habe ich die Version 2.2 von José online gestellt....</small></li>
<li><a href='http://www.faq-o-matic.net/2008/05/08/kleines-update-fuer-jose/' rel='bookmark' title='Kleines Update f&uuml;r José'>Kleines Update f&uuml;r José</a> <small>Update 22. Oktober 2008: Es gibt eine neue Fassung von...</small></li>
<li><a href='http://www.faq-o-matic.net/2009/09/29/jos-2-3-kleine-korrektur/' rel='bookmark' title='Jos&eacute; 2.3: Kleine Korrektur'>Jos&eacute; 2.3: Kleine Korrektur</a> <small>Mein Dokumentationswerkzeug ”José” zur Dokumentation der logischen Active-Directory-Struktur liegt jetzt...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.faq-o-matic.net/wp-content/uploads/2011/06/image1.png"><img style="background-image: none; margin: 0px 0px 10px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="image" src="http://www.faq-o-matic.net/wp-content/uploads/2011/06/image_thumb1.png" border="0" alt="image" width="154" height="133" align="right" /></a>Mein Dokumentationswerkzeug José ist nun in Version 3.1 verf&uuml;gbar. Neben einigen Fehlerkorrekturen gibt es ein paar neue Funktionen.</p>
<p>Im Einzelnen:</p>
<ul>
<li>Neue Funktionen:
<ul>
<li>Exchange-Schemaversion 2010 SP1</li>
<li>Anzahl Werte bei Multi-Value-Feldern (z.B. Gruppen – die Anzahl Gruppenmitglieder ist so leicht abzulesen)</li>
<li>alle DCs der aktuellen Dom&auml;ne in Dom&auml;nen-Info angegeben</li>
<li>OUs jetzt mit Angabe der Schachtelungstiefe (erleichtert die Orientierung bei langen Reports)</li>
<li>Optionale Angabe von Details, falls José Objekte nicht lesen kann</li>
</ul>
</li>
<li>Korrekturen:
<ul>
<li>Korrektur UAC-Flags</li>
<li>Korrektur der Objektz&auml;hlung: Objekte im Domain-Root werden jetzt gez&auml;hlt</li>
<li>&#034;memberOf&#034; jetzt korrekt &uuml;bersetzt</li>
<li>OUs mit Schr&auml;gstrich im Namen erzeugen keinen Abbruch mehr</li>
</ul>
</li>
</ul>
<p>Hier ist der Download:</p>
Note: There is a file embedded within this post, please visit this post to download the file.
<p>Hier allgemeine Informationen zu José:</p>
<p>[faq-o-matic.net » José: Version 3.0 ist da]<br />
<a href="http://www.faq-o-matic.net/2010/05/26/jos-version-3-0-ist-da/">http://www.faq-o-matic.net/2010/05/26/jos-version-3-0-ist-da/</a></p>
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2009/05/08/jose-22-fehlerkorrektur-und-kleine-ergaenzung/' rel='bookmark' title='José 2.2: Fehlerkorrektur und kleine Erg&auml;nzung'>José 2.2: Fehlerkorrektur und kleine Erg&auml;nzung</a> <br /><small>Soeben habe ich die Version 2.2 von José online gestellt....</small></li>
<li><a href='http://www.faq-o-matic.net/2008/05/08/kleines-update-fuer-jose/' rel='bookmark' title='Kleines Update f&uuml;r José'>Kleines Update f&uuml;r José</a> <br /><small>Update 22. Oktober 2008: Es gibt eine neue Fassung von...</small></li>
<li><a href='http://www.faq-o-matic.net/2009/09/29/jos-2-3-kleine-korrektur/' rel='bookmark' title='Jos&eacute; 2.3: Kleine Korrektur'>Jos&eacute; 2.3: Kleine Korrektur</a> <br /><small>Mein Dokumentationswerkzeug ”José” zur Dokumentation der logischen Active-Directory-Struktur liegt jetzt...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2011/07/06/jos-version-3-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Carmen: Query Active Directory Using SQL Syntax</title>
		<link>http://www.faq-o-matic.net/2011/06/14/carmen-query-active-directory-using-sql-syntax/</link>
		<comments>http://www.faq-o-matic.net/2011/06/14/carmen-query-active-directory-using-sql-syntax/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 04:50:00 +0000</pubDate>
		<dc:creator>Nils Kaczenski</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[AD: Erweiterte Abfragen]]></category>
		<category><![CDATA[Downloads]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[VBScript]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/2011/06/14/carmen-query-active-directory-using-sql-syntax/</guid>
		<description><![CDATA[My script-based query tool “Carmen” for Active Directory has been downloaded more than 10,000 times since its release. Now I added an English version for an international audience. Carmen lets you query Active Directory using SQL-style syntax. This makes it easier for most admins to get data from AD as SQL is more common to [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2004/10/20/carmen-mit-sql-das-ad-abfragen/' rel='bookmark' title='Carmen: Mit SQL das AD abfragen'>Carmen: Mit SQL das AD abfragen</a> <small>Mit Carmen kann man Daten aus dem AD mit SQL-Kommandos...</small></li>
<li><a href='http://www.faq-o-matic.net/2009/09/24/whitepaper-ldap-filter-fr-active-directory/' rel='bookmark' title='Whitepaper: LDAP-Filter f&uuml;r Active Directory'>Whitepaper: LDAP-Filter f&uuml;r Active Directory</a> <small>Das umfangreiche Whitepaper von Florian Frommherz beschreibt Grundlagen, Syntax und...</small></li>
<li><a href='http://www.faq-o-matic.net/2008/01/13/ldap-grundlagen-fuer-active-directory/' rel='bookmark' title='LDAP-Grundlagen f&uuml;r Active Directory'>LDAP-Grundlagen f&uuml;r Active Directory</a> <small>Active Directory orientiert sich an dem Standardprotokoll LDAP v3 (Lightweight...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>My script-based query tool “Carmen” for Active Directory has been downloaded more than 10,000 times since its release. Now I added an English version for an international audience.</p>
<p>Carmen lets you query Active Directory using SQL-style syntax. This makes it easier for most admins to get data from AD as SQL is more common to use than LDAP. Since its very beginning, Active Directory has supported SQL queries – as only few people seem to know.</p>
<p>Carmen is an HTA application written in HTML and VBSript. It is “safe” for your environment as it only reads data but cannot write to AD. Simply launch the tool by double-click and fill in the three data fields SELECT, FROM, and WHERE. (In most cases you can leave the FROM clause as it is since it already contains your domain name.)</p>
Note: There is a file embedded within this post, please visit this post to download the file.
<p><span id="more-3193"></span>
<p>Here are some sample queries:</p>
<table cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td>All users</td>
<td>SELECT * FROM &#039;LDAP://DC=contoso,DC=com&#039; WHERE objectClass=&#039;user&#039; and objectCategory=&#039;person&#039;</td>
</tr>
<tr>
<td>Alle users from Hannover whose phone numbers contain &quot;123&quot;, sorted by name in reverse order</td>
<td>SELECT name, telephoneNumber FROM &#039;LDAP://DC=contoso,DC=com&#039; WHERE objectClass=&#039;user&#039; and objectCategory=&#039;person&#039; and l=&#039;Hannover&#039; and telephoneNumber=&#039;*123*&#039; ORDER BY name DESC</td>
</tr>
<tr>
<td>Disables users (unless other flags are set!)</td>
<td>SELECT * FROM &#039;LDAP://DC=contoso,DC=com&#039; WHERE objectClass=&#039;user&#039; and objectCategory=&#039;person&#039; and userAccountControl=&#039;5142</td>
</tr>
<tr>
<td>All groups</td>
<td>SELECT * FROM &#039;LDAP://DC=contoso,DC=com&#039; WHERE objectClass=&#039;group&#039;</td>
</tr>
<tr>
<td>All domain Global Groups</td>
<td>SELECT * FROM &#039;LDAP://DC=contoso,DC=com&#039; WHERE groupType=&#039;-21474836462</td>
</tr>
<tr>
<td>All Domain Local Groups</td>
<td>SELECT * FROM &#039;LDAP://DC=contoso,DC=com&#039; WHERE groupType=&#039;-21474836442</td>
</tr>
<tr>
<td>All Builti groups</td>
<td>SELECT * FROM &#039;LDAP://DC=contoso,DC=com&#039; WHERE groupType=&#039;-21474836432</td>
</tr>
<tr>
<td>All Universal Groups</td>
<td>SELECT * FROM &#039;LDAP://DC=contoso,DC=com&#039; WHERE groupType=&#039;-21474836402</td>
</tr>
<tr>
<td>All computers</td>
<td>SELECT * FROM &#039;LDAP://DC=contoso,DC=com&#039; WHERE objectClass=&#039;computer&#039;</td>
</tr>
<tr>
<td>All computers with Windows XP and Service Pack 2</td>
<td>SELECT * FROM &#039;LDAP://DC=contoso,DC=com&#039; WHERE objectClass=&#039;computer&#039; and operatingSystem=&#039;Windows XP*&#039; and operatingSystemServicePack=&#039;Service Pack 22</td>
</tr>
<tr>
<td>All sites and subnets in Active Directory</td>
<td>SELECT name,objectClass FROM &#039;LDAP://CN=sites,CN=configuration,DC=contoso,DC=com&#039; WHERE objectClass=&#039;site&#039; or objectClass=&#039;subnet&#039;</td>
</tr>
<tr>
<td>The FSMO role owners</td>
<td>SELECT name,fSMORoleOwner FROM &#039;LDAP://DC=contoso,DC=com&#039; WHERE fSMORoleOwner=&#039;*&#039;</td>
</tr>
</tbody>
</table>
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2004/10/20/carmen-mit-sql-das-ad-abfragen/' rel='bookmark' title='Carmen: Mit SQL das AD abfragen'>Carmen: Mit SQL das AD abfragen</a> <br /><small>Mit Carmen kann man Daten aus dem AD mit SQL-Kommandos...</small></li>
<li><a href='http://www.faq-o-matic.net/2009/09/24/whitepaper-ldap-filter-fr-active-directory/' rel='bookmark' title='Whitepaper: LDAP-Filter f&uuml;r Active Directory'>Whitepaper: LDAP-Filter f&uuml;r Active Directory</a> <br /><small>Das umfangreiche Whitepaper von Florian Frommherz beschreibt Grundlagen, Syntax und...</small></li>
<li><a href='http://www.faq-o-matic.net/2008/01/13/ldap-grundlagen-fuer-active-directory/' rel='bookmark' title='LDAP-Grundlagen f&uuml;r Active Directory'>LDAP-Grundlagen f&uuml;r Active Directory</a> <br /><small>Active Directory orientiert sich an dem Standardprotokoll LDAP v3 (Lightweight...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2011/06/14/carmen-query-active-directory-using-sql-syntax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cindy.vbs 1.1: Windows-Dokumentation korrigiert</title>
		<link>http://www.faq-o-matic.net/2011/05/25/cindy-vbs-1-1-windows-dokumentation-korrigiert/</link>
		<comments>http://www.faq-o-matic.net/2011/05/25/cindy-vbs-1-1-windows-dokumentation-korrigiert/#comments</comments>
		<pubDate>Wed, 25 May 2011 04:54:00 +0000</pubDate>
		<dc:creator>Nils Kaczenski</dc:creator>
				<category><![CDATA[Dokumentation]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/2011/05/25/cindy-vbs-1-1-windows-dokumentation-korrigiert/</guid>
		<description><![CDATA[Aufgrund einiger R&#252;ckmeldungen, dass die urspr&#252;ngliche Fassung des Dokumentationsskripts Cindy.vbs auf manchen Systemen zu Fehlern oder langen Verz&#246;gerungen f&#252;hrte, habe ich eine angepasste Version erzeugt. In der neuen Fassung werden einige lang laufende und potenziell problematische Abfragen nur noch auf Anforderung ausgef&#252;hrt. Ruft man das Skript in der bisherigen Syntax auf, so l&#228;sst es die [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2011/01/24/cindy-wmi-dokuskript-fr-windows-rechner/' rel='bookmark' title='Cindy: WMI-Dokuskript f&uuml;r Windows-Rechner'>Cindy: WMI-Dokuskript f&uuml;r Windows-Rechner</a> <small>Das VBS-Skript Cindy liest per WMI zahlreiche Konfigurationsinformationen von einem...</small></li>
<li><a href='http://www.faq-o-matic.net/2011/08/22/exchange-dokumentation-im-html-format/' rel='bookmark' title='Exchange-Dokumentation im HTML-Format'>Exchange-Dokumentation im HTML-Format</a> <small>Steve Goodman hat ein PowerShell-Skript publiziert, das bei der Dokumentation...</small></li>
<li><a href='http://www.faq-o-matic.net/2008/10/29/jos-active-directory-dokumentation-version-20-ist-fertig/' rel='bookmark' title='Jos&eacute; Active-Directory-Dokumentation: Version 2.0 ist fertig'>Jos&eacute; Active-Directory-Dokumentation: Version 2.0 ist fertig</a> <small>Achtung, Update 28. Mai 2010: Version 3.0 ist aktuell! Nutzt...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Aufgrund einiger R&uuml;ckmeldungen, dass die urspr&uuml;ngliche Fassung des Dokumentationsskripts <em>Cindy.vbs</em> auf manchen Systemen zu Fehlern oder langen Verz&ouml;gerungen f&uuml;hrte, habe ich eine angepasste Version erzeugt. In der neuen Fassung werden einige lang laufende und potenziell problematische Abfragen nur noch auf Anforderung ausgef&uuml;hrt. Ruft man das Skript in der bisherigen Syntax auf, so l&auml;sst es die “erweiterten” Abfragen (lokale User, installierte Produkte und einige andere) weg.</p>
<ul>
<li>Kurzer Report:     <br /><font face="Courier New">cscript //nologo cindy.vbs DC01&gt;DC01.txt</font></li>
<li>Langer Report:     <br /><font face="Courier New">cscript //nologo cindy.vbs /mode:all DC01&gt;DC01.txt</font></li>
</ul>
<p>Hier der Original-Artikel mit der Beschreibung des Skripts:</p>
<p>faq-o-matic.net » Cindy: WMI-Dokuskript f&uuml;r Windows-Rechner]   <br /><a href="http://www.faq-o-matic.net/2011/01/24/cindy-wmi-dokuskript-fr-windows-rechner/">http://www.faq-o-matic.net/2011/01/24/cindy-wmi-dokuskript-fr-windows-rechner/</a> </p>
<p>Und hier der Download:</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/2011/01/24/cindy-wmi-dokuskript-fr-windows-rechner/' rel='bookmark' title='Cindy: WMI-Dokuskript f&uuml;r Windows-Rechner'>Cindy: WMI-Dokuskript f&uuml;r Windows-Rechner</a> <br /><small>Das VBS-Skript Cindy liest per WMI zahlreiche Konfigurationsinformationen von einem...</small></li>
<li><a href='http://www.faq-o-matic.net/2011/08/22/exchange-dokumentation-im-html-format/' rel='bookmark' title='Exchange-Dokumentation im HTML-Format'>Exchange-Dokumentation im HTML-Format</a> <br /><small>Steve Goodman hat ein PowerShell-Skript publiziert, das bei der Dokumentation...</small></li>
<li><a href='http://www.faq-o-matic.net/2008/10/29/jos-active-directory-dokumentation-version-20-ist-fertig/' rel='bookmark' title='Jos&eacute; Active-Directory-Dokumentation: Version 2.0 ist fertig'>Jos&eacute; Active-Directory-Dokumentation: Version 2.0 ist fertig</a> <br /><small>Achtung, Update 28. Mai 2010: Version 3.0 ist aktuell! Nutzt...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2011/05/25/cindy-vbs-1-1-windows-dokumentation-korrigiert/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cindy: WMI-Dokuskript f&#252;r Windows-Rechner</title>
		<link>http://www.faq-o-matic.net/2011/01/24/cindy-wmi-dokuskript-fr-windows-rechner/</link>
		<comments>http://www.faq-o-matic.net/2011/01/24/cindy-wmi-dokuskript-fr-windows-rechner/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 05:43:00 +0000</pubDate>
		<dc:creator>Nils Kaczenski</dc:creator>
				<category><![CDATA[Dokumentation]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/2011/01/24/cindy-wmi-dokuskript-fr-windows-rechner/</guid>
		<description><![CDATA[Das VBS-Skript Cindy liest per WMI zahlreiche Konfigurationsinformationen von einem Windows-System und gibt sie als &#252;bersichtlichen Report aus. Das ist n&#252;tzlich, um die Rahmendaten eines Servers oder Clients schnell zu Dokumentationszwecken zu erfassen. Cindy l&#228;uft auf allen aktuellen Windows-Plattformen. Getestet wurde es u.a. mit Windows 7 (32 Bit), Windows Server 2008 R2, Windows Server 2008 [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2011/05/25/cindy-vbs-1-1-windows-dokumentation-korrigiert/' rel='bookmark' title='Cindy.vbs 1.1: Windows-Dokumentation korrigiert'>Cindy.vbs 1.1: Windows-Dokumentation korrigiert</a> <small>Aufgrund einiger R&uuml;ckmeldungen, dass die urspr&uuml;ngliche Fassung des Dokumentationsskripts Cindy.vbs...</small></li>
<li><a href='http://www.faq-o-matic.net/2006/06/11/wie-kann-ich-abfragen-welche-rechner-welches-service-pack-haben/' rel='bookmark' title='Wie kann ich abfragen, welche Rechner welches Service Pack haben?'>Wie kann ich abfragen, welche Rechner welches Service Pack haben?</a> <small>csvde-Methode&nbsp; von Nils Kaczenski Im AD wird eine Angabe &uuml;ber...</small></li>
<li><a href='http://www.faq-o-matic.net/2009/09/02/windows-ereignisse-erzeugen/' rel='bookmark' title='Windows-Ereignisse erzeugen'>Windows-Ereignisse erzeugen</a> <small>Windows-Ereignisse im Ereignisprotokoll lassen sich per Skript erzeugen. Das kann...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.faq-o-matic.net/wp-content/uploads/2011/01/image1.png"><img style="background-image: none; margin: 0px 10px 10px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border-width: 0px;" title="image" src="http://www.faq-o-matic.net/wp-content/uploads/2011/01/image_thumb1.png" alt="image" width="184" height="169" align="left" border="0" /></a><img src="http://vg01.met.vgwort.de/na/c265cb45791149ddbe940831fc939ed0" alt="" width="1" height="1" align="left" />Das VBS-Skript Cindy liest per WMI zahlreiche Konfigurationsinformationen von einem Windows-System und gibt sie als &uuml;bersichtlichen Report aus. Das ist n&uuml;tzlich, um die Rahmendaten eines Servers oder Clients schnell zu Dokumentationszwecken zu erfassen.</p>
<p>Cindy l&auml;uft auf allen aktuellen Windows-Plattformen. Getestet wurde es u.a. mit Windows 7 (32 Bit), Windows Server 2008 R2, Windows Server 2008 (64 Bit), Windows Server 2003 (32 Bit) und Windows XP (32 Bit). Es sollte aber auch auf &auml;lteren Windows-Versionen laufen, wenn dort WMI nachinstalliert wurde.</p>
<p><span id="more-2919"></span></p>
<p>In der vorliegenden Fassung erfasst Cindy die wichtigsten Daten zu:</p>
<ul>
<li>Betriebssystem</li>
<li>CPU und Arbeitsspeicher</li>
<li>Festplatten, Partitionen und logischen Laufwerken</li>
<li>Netzwerkkarten und IP-Konfiguration</li>
<li>Lokalen Benutzern und Gruppen</li>
<li>Freigaben</li>
<li>Diensten, installierter Software und Hotfixes</li>
</ul>
<p>Dabei beschr&auml;nkt das Skript sich bewusst auf die relevanten Rahmendaten, um den Bericht nicht zu &uuml;berfrachten. Es ist allerdings leicht, zus&auml;tzliche Informationen abzufragen; dazu weiter unten mehr.</p>
<blockquote><p>Achtung: Wie ich just in einem <a href="http://www.mssccmfaq.de/2011/01/21/win32_product/" target="_blank">Artikel von Torsten Meringer</a> las, hat die von Cindy verwendete WMI-Klasse &#034;Win32_Product&#034; einen unsch&ouml;nen Nebeneffekt (um nicht zu sagen: einen &auml;rgerlichen Fehler). Fragt man &uuml;ber sie die installierte Software ab, so f&uuml;hrt sie f&uuml;r jedes einzelne Produkt eine MSI-Repatarur aus. Das sorgt nicht nur f&uuml;r eine unn&ouml;tig lange Ausf&uuml;hrungszeit des Skripts, sondern belastet auch das Zielsystem. Im Application-Eventlog des ausgewerteten Systems findet man dann pro Produkt ein Ereignis mit der ID 1035, das auf diesen Vorgang hinweist.</p>
<p>F&uuml;r eine einmalige Ausf&uuml;hrung von Cindy ist das sicher tolerabel. Wer das Skript auf einer gr&ouml;&szlig;eren Zahl von Rechnern einsetzen oder automatisiert ausf&uuml;hren will, sollte aber pr&uuml;fen, ob er auf die Produktinformation verzichten kann. In diesem Fall sollte man folgende Zeile l&ouml;schen oder durch Voranstellen eines Apostroph auskommentieren:</p>
<p><em>dctWMI.Add &#034;Win32_Product&#034;, &#034;InstallDate,InstallLocation,Vendor,Version&#034;</em></p>
<p>Der folgende KB-Artikel benennt das Problem und schl&auml;gt eine Abhilfe vor: <a href="http://support.microsoft.com/kb/974524">http://support.microsoft.com/kb/974524</a><br />
Leider aber ist die dort empfohlene WMI-Klasse standardm&auml;&szlig;ig nicht vorhanden, sondern setzt voraus, dass ein SCCM- oder SMS-Client auf dem System installiert ist!</p></blockquote>
<h4>Download</h4>
<p>Cindy findet sich hier zum Download. Man entpacke es an geeigneter Stelle.</p>
Note: There is a file embedded within this post, please visit this post to download the file.
<h4>Anwendung</h4>
<p>Cindy ist ein Kommandozeilen-Skript und gibt seinen Bericht auch auf der Konsole aus. Daher sollte man seine Ausgabe in eine Datei umleiten. Es ist notwendig, das Skript mit “cscript.exe” zu starten. Ein typischer Aufruf sieht so aus:</p>
<div class="cmd-box">
<pre><strong><span style="color: #0000a0;">C:\Pfad&gt;</span></strong><em><span style="color: #a40000;">cscript //nologo cindy.vbs &gt; report.txt</span></em></pre>
</div>
<p>Der Schalter <em>//nologo</em> sorgt daf&uuml;r, dass das Start-Banner des Script Host unterdr&uuml;ckt wird. So landet nur der Report selbst in der Ausgabedatei.</p>
<p>Das Skript ben&ouml;tigt zwischen 30 Sekunden und mehreren Minuten f&uuml;r seine Arbeit. Der obige Aufruf liest die Daten des lokalen Rechners aus. Um einen anderen Computer zu dokumentieren, &uuml;bergibt man dem Skript einfach dessen Namen:</p>
<div class="cmd-box">
<pre><strong><span style="color: #0000a0;">C:\Pfad&gt;</span></strong><em><span style="color: #a40000;">cscript //nologo cindy.vbs DC01 &gt; DC01.txt</span></em></pre>
</div>
<p>Zur lokalen Ausf&uuml;hrung reichen Benutzerrechte aus. F&uuml;r die Remote-Dokumentation k&ouml;nnen administrative Rechte auf dem Zielsystem erforderlich sein, au&szlig;erdem darf WMI nicht per Berechtigung oder Firewall eingeschr&auml;nkt sein.</p>
<h4>Erweiterung</h4>
<p>Um den Report zu erweitern, kann man sehr einfach zus&auml;tzliche WMI-Klassen oder -Eigenschaften hinzuf&uuml;gen. Dazu bearbeitet man im Skriptcode die folgenden Zeilen (hier nur ein Auszug):</p>
<pre>dctWMI.Add "Win32_PhysicalMemory", "BankLabel,Capacity"
dctWMI.Add "Win32_DiskDrive", "InterfaceType,Index,Size"
dctWMI.Add "Win32_DiskPartition", "Size"
dctWMI.Add "Win32_LogicalDisk", "Size,FreeSpace"</pre>
<p>Um etwa die “Maximum Block Size” f&uuml;r Platten mit aufzunehmen, erg&auml;nzt man die Eigenschaft “MaxBlockSize” in der Zeile mit “Win32_DiskDrive”:</p>
<pre>dctWMI.Add "Win32_DiskDrive", "InterfaceType,Index,Size,MaxBlockSize"</pre>
<p>Will man z.B. Informationen zu den L&uuml;ftern mit aufnehmen, f&uuml;gt man eine komplette Zeile nach diesem Muster in den Block ein:</p>
<pre>dctWMI.Add "Win32_Fan", "DesiredSpeed"</pre>
<p>Umgekehrt lassen sich Informationen aus dem Bericht entfernen, indem man die zust&auml;ndige Zeile l&ouml;scht oder auskommentiert.</p>
<p>Die Eigenschaft “Caption”, die den Namen des jeweiligen Elements enth&auml;lt, ber&uuml;cksichtigt Cindy immer von selbst. Welche WMI-Objekte und -Eigenschaften zur Verf&uuml;gung stehen, erf&auml;hrt man z.B. auf den MSDN-Seiten bei Microsoft oder in vielen anderen Quellen.</p>
<p>Hier eine Code-Erweiterung von Robert Riebisch. Sie ver&auml;ndert zwei vorhandene Zeilen und f&uuml;gt eine neue hinzu, um erg&auml;nzende Daten auszugeben (Laufzeit, Systemtyp, Uptime).</p>
<pre>dctWMI.Add "Win32_ComputerSystem", "AutomaticManagedPagefile,AutomaticResetBootOption,Domain,DomainRole,Manufacturer,Model,NumberOfProcessors,NumberOfLogicalProcessors,PrimaryOwnerName,SystemType,TotalPhysicalMemory"
dctWMI.Add "Win32_OperatingSystem", "BootDevice,CodeSet,CountryCode,CurrentTimeZone,InstallDate,LastBootUpTime,OSArchitecture,OSLanguage,ServicePackMajorVersion,ServicePackMinorVersion,SystemDevice,WindowsDirectory"
dctWMI.Add "Win32_BaseBoard", "Manufacturer,Model,Name,Product,SerialNumber,Version"</pre>
<h4>Code</h4>
<p>Wer mag, kann Cindy gern an seinen Bedarf anpassen. Es w&auml;re dann nett, wenn ein Hinweis auf das Originalskript und auf faq-o-matic.net im Code verbleibt.</p>
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2011/05/25/cindy-vbs-1-1-windows-dokumentation-korrigiert/' rel='bookmark' title='Cindy.vbs 1.1: Windows-Dokumentation korrigiert'>Cindy.vbs 1.1: Windows-Dokumentation korrigiert</a> <br /><small>Aufgrund einiger R&uuml;ckmeldungen, dass die urspr&uuml;ngliche Fassung des Dokumentationsskripts Cindy.vbs...</small></li>
<li><a href='http://www.faq-o-matic.net/2006/06/11/wie-kann-ich-abfragen-welche-rechner-welches-service-pack-haben/' rel='bookmark' title='Wie kann ich abfragen, welche Rechner welches Service Pack haben?'>Wie kann ich abfragen, welche Rechner welches Service Pack haben?</a> <br /><small>csvde-Methode&nbsp; von Nils Kaczenski Im AD wird eine Angabe &uuml;ber...</small></li>
<li><a href='http://www.faq-o-matic.net/2009/09/02/windows-ereignisse-erzeugen/' rel='bookmark' title='Windows-Ereignisse erzeugen'>Windows-Ereignisse erzeugen</a> <br /><small>Windows-Ereignisse im Ereignisprotokoll lassen sich per Skript erzeugen. Das kann...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2011/01/24/cindy-wmi-dokuskript-fr-windows-rechner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;An Taskleiste anheften&#8221; per Gruppenrichtlinie</title>
		<link>http://www.faq-o-matic.net/2010/12/20/an-taskleiste-anheften-per-gruppenrichtlinie/</link>
		<comments>http://www.faq-o-matic.net/2010/12/20/an-taskleiste-anheften-per-gruppenrichtlinie/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 06:40:00 +0000</pubDate>
		<dc:creator>Bent Schrader</dc:creator>
				<category><![CDATA[Gruppenrichtlinien]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/2010/12/20/an-taskleiste-anheften-per-gruppenrichtlinie/</guid>
		<description><![CDATA[Seit Windows 7 und Windows Server 2008 R2 gibt es bekanntlich keine Schnellstart-Leiste (Quicklaunch) mehr. Die neue Taskleiste wurde komplett &#252;berarbeitet und wartet mit einer F&#252;lle neuer Funktionen auf. Dazu geh&#246;rt unter Anderem das “Anheften” von Programmsymbolen bzw. Verkn&#252;pfungen, um den schnellen Zugriff auf h&#228;ufig verwendete Anwendungen zu erm&#246;glichen. Das ist sch&#246;n und gleichzeitig gut, [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2011/07/20/alte-programme-an-die-taskleiste-heften/' rel='bookmark' title='&ldquo;Alte&rdquo; Programme an die Taskleiste heften'>&ldquo;Alte&rdquo; Programme an die Taskleiste heften</a> <small>Windows 7 erlaubt es, Programme oder Dokumente an der Taskleiste...</small></li>
<li><a href='http://www.faq-o-matic.net/2011/02/09/service-pack-1-fr-windows-7-und-server-2008-r2-ist-rtm/' rel='bookmark' title='Service Pack 1 f&uuml;r Windows 7 und Server 2008 R2 ist RTM!'>Service Pack 1 f&uuml;r Windows 7 und Server 2008 R2 ist RTM!</a> <small>Ich zitiere Michael Kleef vom TechNet-Blog: Windows Server 2008 R2...</small></li>
<li><a href='http://www.faq-o-matic.net/2009/10/06/webcast-windows-7-und-windows-server-2008-r2-reif-frs-unternehmen/' rel='bookmark' title='Webcast: &ldquo;Windows 7 und Windows Server 2008 R2: Reif f&uuml;rs Unternehmen?&rdquo;'>Webcast: &ldquo;Windows 7 und Windows Server 2008 R2: Reif f&uuml;rs Unternehmen?&rdquo;</a> <small>Am 20. Oktober werde ich einen Webcast zu Windows 7...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Seit Windows 7 und Windows Server 2008 R2 gibt es bekanntlich keine Schnellstart-Leiste (Quicklaunch) mehr. Die neue Taskleiste wurde komplett &uuml;berarbeitet und wartet mit einer F&uuml;lle <a href="http://windows.microsoft.com/de-DE/windows7/help/better-stronger-faster-the-windows-7-taskbar">neuer Funktionen</a> auf. Dazu geh&ouml;rt unter Anderem das “Anheften” von Programmsymbolen bzw. Verkn&uuml;pfungen, um den schnellen Zugriff auf h&auml;ufig verwendete Anwendungen zu erm&ouml;glichen. Das ist sch&ouml;n und gleichzeitig gut, allerdings gibt es f&uuml;r die automatische Verteilung bzw. Einrichtung keine Gruppenrichtlinie. </p>
<p>Da ich aber nun auch f&uuml;r die aktuellen Betriebssystemversionen ebenfalls eine automatisierte L&ouml;sung (auf Basis von Gruppenrichtlinien) brauchte, habe ich ein VBS-Skript geschrieben. Ob nun bei der Anmeldung als Administrator an einem Server in der Dom&auml;ne oder ob als Benutzer an einem Terminalserver 2008 R2, um manuelle Eingriffe so gering wie m&ouml;glich zu halten, ben&ouml;tige ich eine automatische Konfiguration f&uuml;r Benutzer-abh&auml;ngige Einstellungen des Betriebssystems.</p>
<p>  <span id="more-2879"></span>
<p><strong>L&ouml;sung</strong>: Das Skript <a href="http://bent-blog.de/download/pintaskbar.zip">PinTaskbar.zip</a> (Download vom <a href="http://bent-blog.de/" target="_blank">Blog des Autors</a>) l&ouml;st dieses Problem unkompliziert und mit einem kleinen Trick. F&uuml;r die Umsetzung und Ausf&uuml;hrung sind allerdings ein paar kleinere Vorbereitungen n&ouml;tig. (Es wird kein Dom&auml;nencontroller unter Windows Server 2008 R2 ben&ouml;tigt, diese Variante funktioniert bereits mit Windows Server 2003!) </p>
<h4>Der Skriptcode:</h4>
<pre>'* VBS Script zum Anheften von Verkn&uuml;pfungen an die Taskleiste
'* f&uuml;r Windows 7 und Windows Server 2008 R2 (Deutsch und Englisch)
'* (c) 2010 by B

Dim objArgs
Dim objFolder
Dim objFolderItem, objLNKItem
Dim Itemverb

Set objArgs = WScript.Arguments
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set objEnv = WshShell.Environment("Process")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")

If Wscript.Arguments.Count > 0 Then 

	strFolder = Wscript.Arguments(0)
	strTarget = objEnv("APPDATA") &#038; "\Microsoft\Internet Explorer\Quick Launch\"
	If Right(strFolder,1) <> "\" Then strFolder = strFolder &#038; "\"

	Set objFolder = objFSO.GetFolder(strFolder)

	For Each File In objFolder.Files
		Set objFile = objFSO.GetFile(File)
		If Lcase(objFSO.GetExtensionName(objFile)) = "lnk" Then
			objFSO.CopyFile strFolder &#038; File.Name, strTarget, TRUE	'Zieldatei wird &uuml;berschrieben!
			Set objFolder = objShell.Namespace(strTarget)
			Set objLNKItem = objFolder.ParseName(File.Name)
			For Each Itemverb In objLNKItem.Verbs
				If Replace(Itemverb.Name, "&#038;", "") = "An Taskleiste anheften" Then Itemverb.DoIt
				If Replace(Itemverb.Name, "&#038;", "") = "Pin to Taskbar" Then Itemverb.DoIt
			Next
		End If
	Next

End If</pre>
<h4>Die Umsetzung</h4>
<p>Ich werde mich in meiner folgenden Anleitung auf zwei Beispiel-Anwendungen von Windows 7 und Server 2008 R2 beschr&auml;nken – Notepad und das Snipping Tool. Das Skript entpackt man beispielsweise in einen Unterordner der NETLOGON-Ressource, in meinem Fall nach:</p>
<blockquote>
<p>\\FQDN\Netlogon\Skripte\</p>
</blockquote>
<p>Zu Beginn erstellt man die Verkn&uuml;pfungen, die sp&auml;ter verteilt und an die Taskleiste angeheftet werden sollen:</p>
<p><a href="http://bent-blog.de/wp-content/uploads/2010/12/apps-lnk.jpg"><img title="Dateiverkn&uuml;pfungen *.lnk" alt="" src="http://bent-blog.de/wp-content/uploads/2010/12/apps-lnk-300x18.jpg" width="300" height="18" /></a></p>
<p>Diese Verkn&uuml;pfungen k&ouml;nnen nun in einen zentralen Ordner f&uuml;r die sp&auml;tere Verteilung innerhalb der Dom&auml;ne verschoben werden, in meinem Beispiel nach:</p>
<blockquote>
<p>\\FQDN\Netlogon\Taskbar</p>
</blockquote>
<p>Wer zwischen verschiedenen Benutzergruppen unterscheiden m&ouml;chte, kann entweder Unterordner (wie Administratoren und Benutzer) erstellen, oder – und das ist wesentlich eleganter – die Leseberechtigungen f&uuml;r jede Datei f&uuml;r die jeweils relevanten Gruppen setzen oder entfernen. Der Vorteil dieser zentralen Stelle ist, ich muss meine Verkn&uuml;pfungen nur an einem Ort pflegen und aktualisieren, die &Auml;nderungen werden bei der n&auml;chsten Anmeldung eines Benutzers neu gesetzt.</p>
<p>Nun muss nur noch eine (oder mehrere, abh&auml;ngig von den unterschiedlichen Verkn&uuml;pfung-Sets) geeignete Gruppenrichtlinie(n) ausw&auml;hlen und die Ausf&uuml;hrung des Skripts PinTaskbar.vbs konfigurieren (Benutzerkonfiguration, Windows-Einstellungen, Skripts, Anmelden):</p>
<p><a href="http://bent-blog.de/wp-content/uploads/2010/12/gpo-call-vbs.jpg"><img title="Gruppenrichtlinie: Anmeldeskript hinzuf&uuml;gen" alt="" src="http://bent-blog.de/wp-content/uploads/2010/12/gpo-call-vbs-300x128.jpg" width="300" height="128" /></a></p>
<p><strong>Wichtig</strong>: Als Skript-Parameter ist das Verzeichnis (\\FQDN\Netlogon\Taskbar) anzugeben, in dem sich die Verkn&uuml;pfungen befinden, ohne Parameter beendet sich das Skript ohne Aktion.</p>
<p><strong>Achtung</strong>: Das Skript funktioniert nur f&uuml;r die Betriebssysteme Windows 7 und Windows Server 2008 R2. F&uuml;r die Ausf&uuml;hrung via Gruppenrichtlinien sollte die WMI-Filterung genutzt werden, um Fehler auf Systemen mit &auml;lteren Betriebssystemversionen zu vermeiden.&#160; Der WMI-Filter f&uuml;r Windows Server 2008 R2 und Windows 7 lautet:</p>
<blockquote>
<p>select * from Win32_OperatingSystem where Version like “6.1%”</p>
</blockquote>
<p><strong>Funktionsweise</strong>: Das Skript selber ist relativ simpel und klein. Wie beschrieben, erwartet es einen &Uuml;bergabeparameter &#8211; n&auml;mlich das Quellverzeichnis der Verkn&uuml;pfungen, in meinem Beispielfall also:</p>
<blockquote>
<p>\\FQDN\Netlogon\Taskbar</p>
</blockquote>
<p>Aus diesem Verzeichnis kopiert das Skript nun alle LNK-Dateien (*.lnk) in das Zielverzeichnis:</p>
<blockquote>
<p>%APPDATA%\Microsoft\Internet Explorer\Quick Launch\</p>
</blockquote>
<p>Dabei zeigt die Umgebungsvariable %APPDATA% auf das Benutzerverzeichnis (Profil) %SystemDrive%\Users\<em>Benutzername</em>\AppData\Roaming. Somit werden die Verkn&uuml;pfungen immer in das richtige Benutzerprofil kopiert und von dieser Stelle an die Taskleiste angeheftet. Das Skript funktioniert dabei sowohl f&uuml;r die Sprache Deutsch als auch f&uuml;r Englisch (andere Sprachen m&uuml;ssen in Zeile 30 oder 31 des Skripts ge&auml;ndert bzw. hinzugef&uuml;gt werden). Damit ist die Abarbeitung auch schon beendet.</p>
<p>Wer mag, kann das Skript gern &auml;ndern bzw. seinen eigenen Anforderungen anpassen.</p>
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2011/07/20/alte-programme-an-die-taskleiste-heften/' rel='bookmark' title='&ldquo;Alte&rdquo; Programme an die Taskleiste heften'>&ldquo;Alte&rdquo; Programme an die Taskleiste heften</a> <br /><small>Windows 7 erlaubt es, Programme oder Dokumente an der Taskleiste...</small></li>
<li><a href='http://www.faq-o-matic.net/2011/02/09/service-pack-1-fr-windows-7-und-server-2008-r2-ist-rtm/' rel='bookmark' title='Service Pack 1 f&uuml;r Windows 7 und Server 2008 R2 ist RTM!'>Service Pack 1 f&uuml;r Windows 7 und Server 2008 R2 ist RTM!</a> <br /><small>Ich zitiere Michael Kleef vom TechNet-Blog: Windows Server 2008 R2...</small></li>
<li><a href='http://www.faq-o-matic.net/2009/10/06/webcast-windows-7-und-windows-server-2008-r2-reif-frs-unternehmen/' rel='bookmark' title='Webcast: &ldquo;Windows 7 und Windows Server 2008 R2: Reif f&uuml;rs Unternehmen?&rdquo;'>Webcast: &ldquo;Windows 7 und Windows Server 2008 R2: Reif f&uuml;rs Unternehmen?&rdquo;</a> <br /><small>Am 20. Oktober werde ich einen Webcast zu Windows 7...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2010/12/20/an-taskleiste-anheften-per-gruppenrichtlinie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Festplatte fast voll? Per Skript Warnung verschicken</title>
		<link>http://www.faq-o-matic.net/2010/08/16/festplatte-fast-voll-per-skript-warnung-verschicken/</link>
		<comments>http://www.faq-o-matic.net/2010/08/16/festplatte-fast-voll-per-skript-warnung-verschicken/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 07:07:00 +0000</pubDate>
		<dc:creator>Karsten Moldenhauer</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[VBScript]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/2010/08/16/festplatte-fast-voll-per-skript-warnung-verschicken/</guid>
		<description><![CDATA[Als Administrator wei&#223; man doch lieber vor den Nutzern, wenn etwas nicht mehr funktioniert. Noch besser ist nat&#252;rlich, wenn man aufgrund einer rechtzeitigen Information ein sich androhendes Unheil abwenden kann. Und solange man noch einen funktionierenden E-Mail-Server hat, bietet sich dieser doch als Informant an. Ein Problem hier ist meist das Fehlen von &#220;berwachungstools, deren [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2008/02/07/visual-basic-script-mailer/' rel='bookmark' title='Visual Basic Script Mailer'>Visual Basic Script Mailer</a> <small>F&uuml;r Administratoren ist es oft n&uuml;tzlich, per EMail benachrichtigt zu...</small></li>
<li><a href='http://www.faq-o-matic.net/2008/02/07/batch-command-line-mailer/' rel='bookmark' title='Batch Command Line Mailer'>Batch Command Line Mailer</a> <small>F&uuml;r Administratoren ist es oft n&uuml;tzlich, per EMail benachrichtigt zu...</small></li>
<li><a href='http://www.faq-o-matic.net/2005/02/06/smtp-richtig-eingerichtet-unter-windows-200x/' rel='bookmark' title='SMTP richtig eingerichtet unter Windows 200x'>SMTP richtig eingerichtet unter Windows 200x</a> <small>Die zust&auml;ndigen Mailserver f&uuml;r eine Dom&auml;ne werden &uuml;ber den sog....</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Als Administrator wei&szlig; man doch lieber <em>vor</em> den Nutzern, wenn etwas nicht mehr funktioniert. Noch besser ist nat&uuml;rlich, wenn man aufgrund einer rechtzeitigen Information ein sich androhendes Unheil abwenden kann. Und solange man noch einen funktionierenden E-Mail-Server hat, bietet sich dieser doch als Informant an.</p>
<p>Ein Problem hier ist meist das Fehlen von &Uuml;berwachungstools, deren Konfiguration auf das zu &uuml;berwachende Objekt oder die Wahl der richtigen Informationsweitergabe. Ein Eintrag in einem Logfile n&uuml;tzt mir beispielsweise nichts, wenn ich immer wieder mal nicht rechtzeitig reinschaue. Au&szlig;erdem nutze ich als Admin doch lieber Automatismen, die mir einiges abnehmen. </p>
<p>Ein wiederkehrendes Thema ist das Volllaufen von Festplatten, ganz besonders gerne auch derjenigen, die Transaktionsprotokolle von Datenbanken beherbergen. Erscheint dann die Meldung „Kein Platz mehr auf Laufwerk X:“ zusammen mit „&Uuml;brigens, die Datenbanken sind deswegen auch angehalten worden“, ist das besonders &auml;rgerlich.</p>
</p>
<p> <span id="more-2549"></span>
<p>Unter Windows (ab Windows 2003) kann mit einem VBSkript eine Kontrolle und Info erfolgen. Das Skript k&ouml;nnte &uuml;ber einen Task (zum Beispiel unter Windows Server 2008 R2 &uuml;ber die Aufgabenplanungsbibliothek einzurichten) regelm&auml;&szlig;ig gestartet werden und beim Unterschreiten einer Grenze per E-Mail warnen.</p>
<h4>Aufbau des Skriptes</h4>
<p>Nach der Definition von Konstanten zur besseren Auswahl beim Zusammenstellen der CDO-Nachricht werden &uuml;ber Variablen die Grenze und die Daten f&uuml;r den E-Mail-Aufbau festgelegt. &Uuml;ber die Funktion „Platzkontrolle“ k&ouml;nnen dann Laufwerke auf noch freien Speicherplatz gepr&uuml;ft und zuletzt mit Hilfe der Prozedur „CDOmail“ eine E-Mail verschickt werden. (M&ouml;chtet ihr die Funktion oder die Prozedur in anderen Skripten verwenden, so w&auml;ren die von mir zur besseren &Uuml;bersicht am Skriptanfang definierten dazugeh&ouml;rigen Variablen und Konstanten „mitzunehmen“.)</p>
<p>Die Idee zur CDOmail habe ich von <a href="http://www.msxfaq.de/code/sendcdomail.htm">http://www.msxfaq.de/code/sendcdomail.htm</a> und Infos von <a href="http://www.paulsadowski.com/wsh/cdo.htm">http://www.paulsadowski.com/wsh/cdo.htm</a></p>
<h4>Das VBSkript</h4>
<div class="vb">
<ol>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Option</span> <span style="color: #b1b100">explicit</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Dim</span> strIPdesSMTP, strBetreff, strAn, strAbsender, strAnhang, strBenutzer, strPasswort</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Dim</span> intGrenze, kritisch, strText</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Dim</span> fso, oDrive, strPlatz, vglGrenze</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Dim</span> oMessage</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #808080">&#039;Wo soll die E-Mail angeliefert werden?</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Const</span> cdoSendUsingPickup = <span style="color: #cc66cc">1</span> <span style="color: #808080">&#039;&#8230;im Pickup-Verzeichnis des auf dem skriptausf&uuml;hrenden Server laufenden SMTP-Dienstes</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Const</span> cdoSendUsingPort = <span style="color: #cc66cc">2</span> <span style="color: #808080">&#039;&#8230;an einen SMTP-Server im Netzwerk</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #808080">&#039;Wie soll sich am SMTP-Server authentifiziert werden?</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Const</span> cdoAnonymous = <span style="color: #cc66cc">0</span> <span style="color: #808080">&#039;keine Authentifizierung erforderlich am SMTP-Server</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Const</span> cdoBasic = <span style="color: #cc66cc">1</span> <span style="color: #808080">&#039;dann muss strBenutzer und strPasswort angegeben werden</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Const</span> cdoNTLM = <span style="color: #cc66cc">2</span> <span style="color: #808080">&#039;der das Skript ausf&uuml;hrende Benutzer wird zur Anmeldung am SMTP-Server benutzt</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">strIPdesSMTP = <span style="color: #ff0000">&quot;10.10.10.10&quot;</span> <span style="color: #808080">&#039;IP des SMTP-Servers eintragen</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">strBetreff= <span style="color: #ff0000">&quot;Hier steht der Betreff&quot;</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">strAn = <span style="color: #ff0000">&quot;empf1@dom.de;empf2@dom.de&quot;</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">strAbsender = <span style="color: #ff0000">&quot;abs@dom.de&quot;</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">strAnhang = <span style="color: #ff0000">&quot;&quot;</span> <span style="color: #808080">&#039;Eventuell eine Datei mit vollst&auml;ndigem Pfad angeben</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #808080">&#039;f&uuml;r den Fall der Klartext-Authentifizierung (cdoBasic)</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">strBenutzer = <span style="color: #ff0000">&quot;Dom&auml;ne\username&quot;</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">strPasswort = <span style="color: #ff0000">&quot;geheim&quot;</span> <span style="color: #808080">&#039; Achtung: Wird hier ein Passwort benutzt, sollte das VB-Skript verschl&uuml;sselt werden</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160;&#160;&#160;&#160; </div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #808080">&#039;Bei Unterschreiten welcher Grenze soll eine E-Mail versandt werden?</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">intGrenze = <span style="color: #cc66cc">2048</span> <span style="color: #808080">&#039;in MB</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">kritisch = <span style="color: #ff0000">&quot;Nein&quot;</span> <span style="color: #808080">&#039;Wird bei Unterschreiten der Grenze durch die Funktion Platzkontrolle auf Ja gesetzt</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">strText = <span style="color: #ff0000">&quot;Noch vorhandener Platz auf den Laufwerken:&quot;</span> &amp; <span style="color: #b1b100">vbcrlf</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">strText = strText &amp; Platzkontrolle<span style="color: #66cc66">(</span><span style="color: #ff0000">&quot;C:\&quot;</span>,intGrenze<span style="color: #66cc66">)</span> &amp; <span style="color: #b1b100">vbCrLf</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">strText = strText &amp; Platzkontrolle<span style="color: #66cc66">(</span><span style="color: #ff0000">&quot;D:\&quot;</span>,intGrenze<span style="color: #66cc66">)</span> &amp; <span style="color: #b1b100">vbcrlf</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #808080">&#039;Weitere Laufwerke pr&uuml;fen? =&gt; Kommentarzeichen der n&auml;chsten beiden Zeilen entfernen</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #808080">&#039;strText = strText &amp; Platzkontrolle(&quot;E:\&quot;,intGrenze) &amp; vbcrlf</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #808080">&#039;strText = strText &amp; Platzkontrolle(&quot;F:\&quot;,intGrenze) &amp; vbcrlf</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">If</span> kritisch = <span style="color: #ff0000">&quot;Ja&quot;</span> <span style="color: #b1b100">Then</span> </div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160; CDOmail strBetreff, strAbsender, strAn, strText, strAnhang</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">End</span> <span style="color: #b1b100">if</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Function</span> Platzkontrolle<span style="color: #66cc66">(</span>sLW,sLW_Warngrenze<span style="color: #66cc66">)</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Set</span> fso = <span style="color: #b1b100">CreateObject</span><span style="color: #66cc66">(</span><span style="color: #ff0000">&quot;Scripting.FileSystemObject&quot;</span><span style="color: #66cc66">)</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160; <span style="color: #b1b100">Set</span> oDrive = fso.<span>getdrive</span><span style="color: #66cc66">(</span>sLW<span style="color: #66cc66">)</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160; strPlatz = oDrive.<span>freespace</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160; strPlatz = FormatNumber <span style="color: #66cc66">(</span>strPlatz/<span style="color: #cc66cc">1024</span>^<span style="color: #cc66cc">2</span>,<span style="color: #cc66cc">2</span><span style="color: #66cc66">)</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160; vglGrenze = FormatNumber <span style="color: #66cc66">(</span>sLW_Warngrenze,<span style="color: #cc66cc">2</span><span style="color: #66cc66">)</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160; <span style="color: #b1b100">If</span> <span style="color: #b1b100">abs</span><span style="color: #66cc66">(</span>vglGrenze<span style="color: #66cc66">)</span>&gt;abs<span style="color: #66cc66">(</span>strPlatz<span style="color: #66cc66">)</span> <span style="color: #b1b100">Then</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; kritisch = <span style="color: #ff0000">&quot;Ja&quot;</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; Platzkontrolle = <span style="color: #ff0000">&quot;ACHTUNG: Auf &quot;</span> &amp; sLW &amp; <span style="color: #ff0000">&quot; wurde die &quot;</span> &amp; vglGrenze &amp; <span style="color: #ff0000">&quot; MB Grenze unterschritten. Noch &quot;</span> &amp; strPlatz &amp; <span style="color: #ff0000">&quot; MB frei&quot;</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160; <span style="color: #b1b100">Else</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; Platzkontrolle = sLW &amp; <span style="color: #ff0000">&quot;OK. Noch &quot;</span> &amp; strPlatz &amp; <span style="color: #ff0000">&quot; MB frei&quot;</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160; <span style="color: #b1b100">End</span> <span style="color: #b1b100">if</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160; </div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Set</span> oDrive = <span style="color: #b1b100">nothing</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Set</span> fso = <span style="color: #b1b100">nothing</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">End</span> <span style="color: #b1b100">Function</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Sub</span> CDOmail<span style="color: #66cc66">(</span>fBetreff,fAbs,fAn,fText,fAnhang<span style="color: #66cc66">)</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160; <span style="color: #b1b100">Set</span> oMessage = <span style="color: #b1b100">CreateObject</span><span style="color: #66cc66">(</span><span style="color: #ff0000">&quot;CDO.Message&quot;</span><span style="color: #66cc66">)</span> </div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;<span style="color: #808080">&#039;Erzeugung der Nachricht </span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160; <span style="color: #b1b100">With</span> oMessage </div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; .<span>Subject</span> = fBetreff</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; .<span>From</span> = fAbs</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; .<span style="color: #b1b100">To</span> = fAn </div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; .<span>TextBody</span> = fText</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; <span style="color: #b1b100">If</span> fAnhang&lt;&gt;<span style="color: #ff0000">&quot;&quot;</span> <span style="color: #b1b100">Then</span> </div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160;&#160;&#160; oMessage.<span>AddAttachment</span> fAnhang</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; <span style="color: #b1b100">End</span> <span style="color: #b1b100">If</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; <span style="color: #808080">&#039;Server Verbindungsdaten </span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; .<span>Configuration</span>.<span>Fields</span>.<span>Item</span> <span style="color: #66cc66">(</span><span style="color: #ff0000">&quot;http://schemas.microsoft.com/cdo/configuration/sendusing&quot;</span><span style="color: #66cc66">)</span> = cdoSendUsingPort </div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; .<span>Configuration</span>.<span>Fields</span>.<span>Item</span> <span style="color: #66cc66">(</span><span style="color: #ff0000">&quot;http://schemas.microsoft.com/cdo/configuration/smtpserver&quot;</span><span style="color: #66cc66">)</span> = strIPdesSMTP </div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; .<span>Configuration</span>.<span>Fields</span>.<span>Item</span> <span style="color: #66cc66">(</span><span style="color: #ff0000">&quot;http://schemas.microsoft.com/cdo/configuration/smtpauthenticate&quot;</span><span style="color: #66cc66">)</span> = cdoNTLM</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; <span style="color: #808080">&#039;Wird cdoBasic benutzt, die beiden folgenden Zeilen aktivieren</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; <span style="color: #808080">&#039;.Configuration.Fields.Item (&quot;http://schemas.microsoft.com/cdo/configuration/sendusername&quot;) = strBenutzer</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; <span style="color: #808080">&#039;.Configuration.Fields.Item (&quot;http://schemas.microsoft.com/cdo/configuration/sendpassword&quot;) = strPasswort</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; .<span>Configuration</span>.<span>Fields</span>.<span>Update</span> </div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; .<span>send</span> </div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160; <span style="color: #b1b100">End</span> <span style="color: #b1b100">With</span> </div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160; <span style="color: #b1b100">Set</span> oMessage = <span style="color: #b1b100">nothing</span>&#160;&#160; </div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">End</span> <span style="color: #b1b100">Sub</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
</ol></div>
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2008/02/07/visual-basic-script-mailer/' rel='bookmark' title='Visual Basic Script Mailer'>Visual Basic Script Mailer</a> <br /><small>F&uuml;r Administratoren ist es oft n&uuml;tzlich, per EMail benachrichtigt zu...</small></li>
<li><a href='http://www.faq-o-matic.net/2008/02/07/batch-command-line-mailer/' rel='bookmark' title='Batch Command Line Mailer'>Batch Command Line Mailer</a> <br /><small>F&uuml;r Administratoren ist es oft n&uuml;tzlich, per EMail benachrichtigt zu...</small></li>
<li><a href='http://www.faq-o-matic.net/2005/02/06/smtp-richtig-eingerichtet-unter-windows-200x/' rel='bookmark' title='SMTP richtig eingerichtet unter Windows 200x'>SMTP richtig eingerichtet unter Windows 200x</a> <br /><small>Die zust&auml;ndigen Mailserver f&uuml;r eine Dom&auml;ne werden &uuml;ber den sog....</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2010/08/16/festplatte-fast-voll-per-skript-warnung-verschicken/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kennw&#246;rter in VBScript verdeckt eingeben</title>
		<link>http://www.faq-o-matic.net/2010/06/23/kennwrter-in-vbscript-verdeckt-eingeben/</link>
		<comments>http://www.faq-o-matic.net/2010/06/23/kennwrter-in-vbscript-verdeckt-eingeben/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 06:58:00 +0000</pubDate>
		<dc:creator>Nils Kaczenski</dc:creator>
				<category><![CDATA[VBScript]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/2010/06/23/kennwrter-in-vbscript-verdeckt-eingeben/</guid>
		<description><![CDATA[Skripten in VBScript fehlt eine M&#246;glichkeit, Kennw&#246;rter mit einem verdeckten Eingabefeld einzutippen. Eine halbwegs elegante Methode bietet sich per HTML, denn dort gibt es einen speziellen Typ des Steuerelements “INPUT”, das verdeckte Eingaben erm&#246;glicht. Nun eignet sich aber l&#228;ngst nicht jedes Skript dazu, in eine HTML-Seite eingebettet zu werden, denn der im Internet Explorer enthaltene [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2005/03/17/ad-informationen-schnell-auslesen/' rel='bookmark' title='AD-Informationen schnell auslesen'>AD-Informationen schnell auslesen</a> <small>Neben eineAm klassischen ADSI-Skript gibt es eine relativ einfache M&ouml;glichkeit,...</small></li>
<li><a href='http://www.faq-o-matic.net/2010/06/21/gruppe-pr-windows-2000-kompatibler-zugriff-per-skript-leeren/' rel='bookmark' title='Gruppe &ldquo;Pr&auml;-Windows 2000 kompatibler Zugriff&rdquo; per Skript leeren'>Gruppe &ldquo;Pr&auml;-Windows 2000 kompatibler Zugriff&rdquo; per Skript leeren</a> <small>Die Gruppe “Pr&auml;-Windows 2000 kompatibler Zugriff” ist in der ersten...</small></li>
<li><a href='http://www.faq-o-matic.net/2010/03/17/anmeldezeiten-fr-ad-benutzer-per-skript-ausgeben/' rel='bookmark' title='Anmeldezeiten f&uuml;r AD-Benutzer per Skript ausgeben'>Anmeldezeiten f&uuml;r AD-Benutzer per Skript ausgeben</a> <small>Seit jeher l&auml;sst Windows zu, f&uuml;r einen Benutzer Anmeldezeiten zu...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img alt="" align="left" src="http://vg07.met.vgwort.de/na/5cb79754fd51465c91f89ebcb9d0b20e" width="1" height="1" /> Skripten in VBScript fehlt eine M&ouml;glichkeit, Kennw&ouml;rter mit einem verdeckten Eingabefeld einzutippen. Eine halbwegs elegante Methode bietet sich per HTML, denn dort gibt es einen speziellen Typ des Steuerelements “INPUT”, das verdeckte Eingaben erm&ouml;glicht. Nun eignet sich aber l&auml;ngst nicht jedes Skript dazu, in eine HTML-Seite eingebettet zu werden, denn der im Internet Explorer enthaltene Skript-Host kennt einige Funktionen des WSH nicht. Mit anderen Browsern geht es gleich gar nicht.</p>
<p> <span id="more-2464"></span>
<p>Das folgende Skript stellt eine Funktion zur verdeckten Kennworteingabe vor, die den Browser direkt aus dem Skript fernsteuert und damit ein Dialogfeld erzeugt. Nachteil dieser Methode: Ab Internet Explorer 7 gibt es keine sinnvolle M&ouml;glichkeit, einen solchen Dialog in den Vordergrund zu holen, denn die Sicherheitseinstellungen des Browsers lassen das nicht zu. Es kann also sein, dass der Benutzer den Dialog erst per Alt-Tab nach vorn holen muss.</p>
<p><font face="Courier New">strKennwort = GetPassword(&quot;Bitte Kennwort eingeben&quot;)      <br />&#039; strKennwort enth&auml;lt jetzt das Kennwort oder bei Abbruch einen Leerwert </font></p>
<p><font face="Courier New">If strKennwort &lt;&gt; &quot;&quot; Then      <br />&#160;&#160;&#160; WScript.Echo &quot;Kennwort: &quot; &amp; strKennwort       <br />Else       <br />&#160;&#160;&#160; WScript.Echo &quot;Kein Kennwort angegeben.&quot;       <br />End If </font></p>
<p><font face="Courier New">Function GetPassword(strWindowTitle)      <br />&#160;&#160;&#160; Set objIE = WScript.CreateObject(&quot;InternetExplorer.Application&quot;, &quot;IE_&quot;)       <br />&#160;&#160;&#160; objIE.Navigate &quot;about:blank&quot;       <br />&#160;&#160;&#160; objIE.ToolBar = 0       <br />&#160;&#160;&#160; objIE.StatusBar = 0       <br />&#160;&#160;&#160; objIE.Width = 400       <br />&#160;&#160;&#160; objIE.Height = 150       <br />&#160;&#160;&#160; objIE.Left = 300       <br />&#160;&#160;&#160; objIE.Top = 200       <br />&#160;&#160;&#160; objIE.Visible = 1       <br />&#160;&#160;&#160; objIE.Document.Write &quot;&lt;HTML&gt;&quot;       <br />&#160;&#160;&#160; objIE.Document.Write &quot;&lt;TITLE&gt;&quot; &amp; strWindowTitle &amp; &quot;&lt;/TITLE&gt;&quot;       <br />&#160;&#160;&#160; objIE.Document.Write &quot;&lt;SCRIPT LANGUAGE=&quot;&quot;VBScript&quot;&quot;&gt;&quot; &amp; vbNewLine       <br />&#160;&#160;&#160; objIE.Document.Write &quot;Sub RunScript&quot; &amp; vbNewLine       <br />&#160;&#160;&#160; objIE.Document.Write &quot;&#160;&#160;&#160; OKClicked.Value = &quot;&quot;OK&quot;&quot;&quot; &amp; vbNewLine       <br />&#160;&#160;&#160; objIE.Document.Write &quot;End Sub&quot; &amp; vbNewLine       <br />&#160;&#160;&#160; objIE.Document.Write &quot;Sub CancelScript&quot; &amp; vbNewLine       <br />&#160;&#160;&#160; objIE.Document.Write &quot;&#160;&#160;&#160; OKClicked.Value = &quot;&quot;Cancelled&quot;&quot;&quot; &amp; vbNewLine       <br />&#160;&#160;&#160; objIE.Document.Write &quot;End Sub&quot; &amp; vbNewLine       <br />&#160;&#160;&#160; objIE.Document.Write &quot;&lt;/SCRIPT&gt;&quot; &amp; vbNewLine       <br />&#160;&#160;&#160; objIE.Document.Write &quot;&lt;BODY&gt;&lt;P&gt;&quot; &amp; strWindowTitle &amp; &quot;&lt;/P&gt;&quot;       <br />&#160;&#160;&#160; objIE.Document.Write &quot;&lt;P&gt;Kennwort:&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;       <br />&#160;&#160;&#160; objIE.Document.Write &quot;&lt;input type=&quot;&quot;password&quot;&quot; name=&quot;&quot;UserPassword&quot;&quot; size=&quot;&quot;40&quot;&quot;&gt;&quot;       <br />&#160;&#160;&#160; objIE.Document.Write &quot;&lt;input type=&quot;&quot;hidden&quot;&quot; name=&quot;&quot;OKClicked&quot;&quot;&gt;&quot;       <br />&#160;&#160;&#160; objIE.Document.Write &quot;&lt;input id=&quot;&quot;runbutton&quot;&quot; Class=&quot;&quot;button&quot;&quot; type=&quot;&quot;button&quot;&quot; value=&quot;&quot; OK &quot;&quot;&quot;       <br />&#160;&#160;&#160; objIE.Document.Write &quot;name=&quot;&quot;ok_button&quot;&quot; onClick=&quot;&quot;RunScript&quot;&quot;&gt;&quot;       <br />&#160;&#160;&#160; objIE.Document.Write &quot;&lt;input id=&quot;&quot;runbutton&quot;&quot; Class=&quot;&quot;button&quot;&quot; type=&quot;&quot;button&quot;&quot; value=&quot;&quot;Abbrechen&quot;&quot;&quot;       <br />&#160;&#160;&#160; objIE.Document.Write &quot;name=&quot;&quot;cancel_button&quot;&quot; onClick=&quot;&quot;CancelScript&quot;&quot;&gt;&quot;       <br />&#160;&#160;&#160; objIE.Document.Write &quot;&lt;/P&gt;&quot;       <br />&#160;&#160;&#160; objIE.Document.Write &quot;&lt;/BODY&gt;&quot;       <br />&#160;&#160;&#160; objIE.Document.Write &quot;&lt;/HTML&gt;&quot; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; Do While (objIE.Document.Body.All.OKClicked.Value = &quot;&quot;)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; WScript.Sleep 250&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160; Loop </font></p>
<p><font face="Courier New">&#160;&#160;&#160; strPassword = objIE.Document.Body.All.UserPassword.Value      <br />&#160;&#160;&#160; strButton = objIE.Document.Body.All.OKClicked.Value       <br />&#160;&#160;&#160; objIE.Quit       <br />&#160;&#160;&#160; WScript.Sleep 250       <br />&#160;&#160;&#160; If strButton = &quot;Cancelled&quot; Then       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; GetPassword = &quot;&quot;       <br />&#160;&#160;&#160; Else       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; GetPassword = strPassword       <br />&#160;&#160;&#160; End If </font></p>
<p><font face="Courier New">End Function</font></p>
<p>Weiterer Nachteil: Man darf den Dialog nur &uuml;ber die Buttons “OK” oder “Cancel” beenden, nicht &uuml;ber das “Schlie&szlig;en-X” am rechten oberen Rand. Aber immerhin besser als nix. <img src='http://www.faq-o-matic.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2005/03/17/ad-informationen-schnell-auslesen/' rel='bookmark' title='AD-Informationen schnell auslesen'>AD-Informationen schnell auslesen</a> <br /><small>Neben eineAm klassischen ADSI-Skript gibt es eine relativ einfache M&ouml;glichkeit,...</small></li>
<li><a href='http://www.faq-o-matic.net/2010/06/21/gruppe-pr-windows-2000-kompatibler-zugriff-per-skript-leeren/' rel='bookmark' title='Gruppe &ldquo;Pr&auml;-Windows 2000 kompatibler Zugriff&rdquo; per Skript leeren'>Gruppe &ldquo;Pr&auml;-Windows 2000 kompatibler Zugriff&rdquo; per Skript leeren</a> <br /><small>Die Gruppe “Pr&auml;-Windows 2000 kompatibler Zugriff” ist in der ersten...</small></li>
<li><a href='http://www.faq-o-matic.net/2010/03/17/anmeldezeiten-fr-ad-benutzer-per-skript-ausgeben/' rel='bookmark' title='Anmeldezeiten f&uuml;r AD-Benutzer per Skript ausgeben'>Anmeldezeiten f&uuml;r AD-Benutzer per Skript ausgeben</a> <br /><small>Seit jeher l&auml;sst Windows zu, f&uuml;r einen Benutzer Anmeldezeiten zu...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2010/06/23/kennwrter-in-vbscript-verdeckt-eingeben/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gruppe &#8220;Pr&#228;-Windows 2000 kompatibler Zugriff&#8221; per Skript leeren</title>
		<link>http://www.faq-o-matic.net/2010/06/21/gruppe-pr-windows-2000-kompatibler-zugriff-per-skript-leeren/</link>
		<comments>http://www.faq-o-matic.net/2010/06/21/gruppe-pr-windows-2000-kompatibler-zugriff-per-skript-leeren/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 06:49:00 +0000</pubDate>
		<dc:creator>Nils Kaczenski</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[VBScript]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/2010/06/21/gruppe-pr-windows-2000-kompatibler-zugriff-per-skript-leeren/</guid>
		<description><![CDATA[Die Gruppe “Pr&#228;-Windows 2000 kompatibler Zugriff” ist in der ersten Version von Active Directory unter Windows 2000 eingef&#252;hrt worden, um die Kompatibilit&#228;t des AD mit einigen Anwendungen aus Windows NT 4.0 zu gew&#228;hrleisten. Mit Hilfe dieser Gruppe war es m&#246;glich, anonymen Zugriff auf einige AD-Daten zu gew&#228;hren. Diese Gruppe hat auf viele Objekte in AD [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2008/07/04/mitglieder-einer-ad-gruppe-mit-zusatzdaten-ausgeben/' rel='bookmark' title='Mitglieder einer AD-Gruppe mit Zusatzdaten ausgeben'>Mitglieder einer AD-Gruppe mit Zusatzdaten ausgeben</a> <small>MItglieder einer Gruppe werden in Active Directory an zwei Stellen...</small></li>
<li><a href='http://www.faq-o-matic.net/2004/07/30/wie-kann-ich-die-mitglieder-einer-gruppe-in-eine-datei-schreiben/' rel='bookmark' title='Wie kann ich die Mitglieder einer Gruppe in eine Datei schreiben?'>Wie kann ich die Mitglieder einer Gruppe in eine Datei schreiben?</a> <small>Nat&uuml;rlich gibt es auch hierzu mehrere (kostenlose) M&ouml;glichkeiten &#8211; hier...</small></li>
<li><a href='http://www.faq-o-matic.net/2009/01/17/ad-domnen-benutzer-per-ldap-abfragen/' rel='bookmark' title='AD: &ldquo;Dom&auml;nen-Benutzer&rdquo; per LDAP abfragen'>AD: &ldquo;Dom&auml;nen-Benutzer&rdquo; per LDAP abfragen</a> <small>Wer per LDAP (oder auch per ADSI) die Mitglieder bestimmter...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img alt="" align="left" src="http://vg05.met.vgwort.de/na/6171551e016742b78afd86432d03296c" width="1" height="1" /> Die Gruppe “Pr&auml;-Windows 2000 kompatibler Zugriff” ist in der ersten Version von Active Directory unter Windows 2000 eingef&uuml;hrt worden, um die Kompatibilit&auml;t des AD mit einigen Anwendungen aus Windows NT 4.0 zu gew&auml;hrleisten. Mit Hilfe dieser Gruppe war es m&ouml;glich, anonymen Zugriff auf einige AD-Daten zu gew&auml;hren.</p>
<p>Diese Gruppe hat auf viele Objekte in AD Lese-Zugriffsrechte. Sie ist als Container gedacht: Unter Windows 2000 wurde in diese Gruppe die Pseudogruppe “Jeder” eingef&uuml;gt, die seinerzeit auch anonyme Benutzer umfasste (also solche, die sich nicht an AD angemeldet haben). In sp&auml;teren AD-Versionen wurde diese Mitgliedschaft auf die Pseudogruppe “Authentifizierte Benutzer” ge&auml;ndert, weil die alte Regelung erhebliche Sicherheitsprobleme nach sich zog. (Parallel wurde &uuml;brigens mit SP2 f&uuml;r Windows XP auch die Gruppe “Jeder” ver&auml;ndert: Seitdem umfasst “Jeder” nicht mehr die anonymen Benutzer – damit ist sie faktisch gleichbedeutend mit “Authentifizierte Benutzer”. Man k&ouml;nnte jetzt einwenden, dass die Funktion der Gruppe “Pr&auml;-Windows 2000 kompatibler Zugriff” damit verschwunden ist – und h&auml;tte Recht mit dem Einwand.)</p>
<p>Obwohl Microsoft empfiehlt, dass der Gruppe “Pr&auml;-Windows 2000 kompatibler Zugriff” keine Mitglieder sein sollten, definiert auch ein frisch installierter Windows Server 2008 R2 in einem neuen AD die “Authentifizierten Benutzer” als Mitglied. Diese Tatsache kann sehr hinderlich sein, wenn man das AD mit angepassten AD-Zugriffsrechten absichern m&ouml;chte.</p>
<p> <span id="more-2459"></span>
<p>Es ist nun ein Einfaches, die Gruppe manuell zu leeren. Man kann das aber auch mit einem Skript automatisieren und so in AD-Standardinstallationen einflie&szlig;en lassen. Das folgende Skript erledigt das.</p>
<p>Damit das Skript auch auf nicht-deutschen Systemen funktioniert, spricht es die Gruppe &uuml;ber ihren SID an. Dieser geh&ouml;rt zu den sog. “Well-known SIDs” und ist auf jedem System identisch.</p>
<p>[Bekannte Sicherheits-IDs in Windows-Betriebssystemen]    <br /><a href="http://support.microsoft.com/kb/243330">http://support.microsoft.com/kb/243330</a></p>
<p>Das Leeren der Gruppe erfolgt hier einfach mit dem Holzhammer: Das Skript leert das ganze “member”-Attribut der Gruppe auf einen Schlag.</p>
<p>[Remove All the Members of a Group]    <br /><a href="http://gallery.technet.microsoft.com/ScriptCenter/en-us/2cb9b454-13ad-4eb5-a6b2-4ffb55e7d796">http://gallery.technet.microsoft.com/ScriptCenter/en-us/2cb9b454-13ad-4eb5-a6b2-4ffb55e7d796</a></p>
<p>&#160;</p>
<div class="vb">
<ol>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #808080">&#039; Dieses Skript entfernt alle Mitglieder aus der Gruppe &quot;Pr&auml;-Windows 2000 kompatibler Zugriff&quot;</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Const</span> ADS_PROPERTY_CLEAR = <span style="color: #cc66cc">1</span> </div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #808080">&#039; SID der Gruppe &#8211; wichtig in fremdsprachigen Umgebungen</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">strPW2SID = <span style="color: #ff0000">&quot;S-1-5-32-554&quot;</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #808080">&#039; Gruppe anhand des SID finden</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Set</span> objPW2Group = <span style="color: #b1b100">GetObject</span><span style="color: #66cc66">(</span><span style="color: #ff0000">&quot;LDAP://&lt;SID=&quot;</span> &amp; strPW2SID &amp; <span style="color: #ff0000">&quot;&gt;&quot;</span><span style="color: #66cc66">)</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">strPW2DN = objPW2Group.<span style="color: #b1b100">Get</span><span style="color: #66cc66">(</span><span style="color: #ff0000">&quot;distinguishedName&quot;</span><span style="color: #66cc66">)</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">WScript.<span>Echo</span> <span style="color: #ff0000">&quot;Lokalisierter DN der Gruppe: &quot;</span> &amp; strPW2DN</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">WScript.<span>Echo</span> <span style="color: #ff0000">&quot;Aktuelle Mitglieder:&quot;</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">On</span> <span style="color: #b1b100">Error</span> <span style="color: #b1b100">Resume</span> <span style="color: #b1b100">Next</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">arrMembers = objPW2Group.<span>GetEx</span><span style="color: #66cc66">(</span><span style="color: #ff0000">&quot;member&quot;</span><span style="color: #66cc66">)</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><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></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; WScript.<span>Echo</span> <span style="color: #ff0000">&quot;- Keine Mitglieder.&quot;</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; WScript.<span>Quit</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">End</span> <span style="color: #b1b100">If</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">For</span> Each member In arrMembers</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; WScript.<span>Echo</span> <span style="color: #ff0000">&quot;- &quot;</span> &amp; member</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">Next</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">WScript.<span>Echo</span> <span style="color: #b1b100">vbNewLine</span> &amp; <span style="color: #ff0000">&quot;Entferne alle Mitglieder &#8230;&quot;</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">objPW2Group.<span>PutEx</span> ADS_PROPERTY_CLEAR, <span style="color: #ff0000">&quot;member&quot;</span>, <span style="color: #cc66cc">0</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">objPW2Group.<span>SetInfo</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><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></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; WScript.<span>Echo</span> <span style="color: #ff0000">&quot;Fehler: &quot;</span> &amp; <span style="color: #b1b100">Err</span>.<span>number</span> &amp; <span style="color: #ff0000">&quot; (&quot;</span> &amp; <span style="color: #b1b100">Err</span>.<span>Description</span> &amp; <span style="color: #ff0000">&quot;)&quot;</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;&#160;&#160; WScript.<span>Quit</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">End</span> <span style="color: #b1b100">If</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal"><span style="color: #b1b100">On</span> <span style="color: #b1b100">Error</span> <span style="color: #b1b100">Goto</span> <span style="color: #cc66cc">0</span></div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">&#160;</div>
</li>
<li style="font-style: normal; font-family: &#39;Courier New&#39;, courier, monospace; color: black; font-weight: normal">
<div style="font-family: &#39;Courier New&#39;, courier, monospace; font-weight: normal">WScript.<span>Echo</span> <span style="color: #ff0000">&quot;Fertig.&quot;</span></div>
</li>
</ol></div>
<p>Anwendung wie immer auf eigene Gefahr. Kein Support.</p>
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2008/07/04/mitglieder-einer-ad-gruppe-mit-zusatzdaten-ausgeben/' rel='bookmark' title='Mitglieder einer AD-Gruppe mit Zusatzdaten ausgeben'>Mitglieder einer AD-Gruppe mit Zusatzdaten ausgeben</a> <br /><small>MItglieder einer Gruppe werden in Active Directory an zwei Stellen...</small></li>
<li><a href='http://www.faq-o-matic.net/2004/07/30/wie-kann-ich-die-mitglieder-einer-gruppe-in-eine-datei-schreiben/' rel='bookmark' title='Wie kann ich die Mitglieder einer Gruppe in eine Datei schreiben?'>Wie kann ich die Mitglieder einer Gruppe in eine Datei schreiben?</a> <br /><small>Nat&uuml;rlich gibt es auch hierzu mehrere (kostenlose) M&ouml;glichkeiten &#8211; hier...</small></li>
<li><a href='http://www.faq-o-matic.net/2009/01/17/ad-domnen-benutzer-per-ldap-abfragen/' rel='bookmark' title='AD: &ldquo;Dom&auml;nen-Benutzer&rdquo; per LDAP abfragen'>AD: &ldquo;Dom&auml;nen-Benutzer&rdquo; per LDAP abfragen</a> <br /><small>Wer per LDAP (oder auch per ADSI) die Mitglieder bestimmter...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2010/06/21/gruppe-pr-windows-2000-kompatibler-zugriff-per-skript-leeren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>José: Version 3.0 ist da</title>
		<link>http://www.faq-o-matic.net/2010/05/26/jos-version-3-0-ist-da/</link>
		<comments>http://www.faq-o-matic.net/2010/05/26/jos-version-3-0-ist-da/#comments</comments>
		<pubDate>Tue, 25 May 2010 22:30:00 +0000</pubDate>
		<dc:creator>Nils Kaczenski</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Downloads]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[VBScript]]></category>

		<guid isPermaLink="false">http://www.faq-o-matic.net/2010/05/26/jos-version-3-0-ist-da/</guid>
		<description><![CDATA[Nach mehr als einem halben Jahr Betaphase* ist jetzt die Version 3.0 von José, unserem Dokumentationswerkzeug f&#252;r Active Directory, erschienen. Die neue Fassung steht hier zum Download bereit. José erzeugt Berichte &#252;ber die Objekte und den logischen Aufbau einer Active-Directory-Dom&#228;ne und speichert sie im HTML-Format. Die Berichte sind in ihrem Umfang sehr weitgehend konfigurierbar und [...]<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2008/11/10/jose-21-schon-wieder-ein-kleines-update/' rel='bookmark' title='Jose 2.1: Schon wieder ein kleines Update'>Jose 2.1: Schon wieder ein kleines Update</a> <small>Eigentlich sollte die Beta-Phase genau diese Situation vermeiden &#8230; aber...</small></li>
<li><a href='http://www.faq-o-matic.net/2009/05/08/jose-22-fehlerkorrektur-und-kleine-ergaenzung/' rel='bookmark' title='José 2.2: Fehlerkorrektur und kleine Erg&auml;nzung'>José 2.2: Fehlerkorrektur und kleine Erg&auml;nzung</a> <small>Soeben habe ich die Version 2.2 von José online gestellt....</small></li>
<li><a href='http://www.faq-o-matic.net/2011/07/06/jos-version-3-1/' rel='bookmark' title='Jos&eacute;: Version 3.1'>Jos&eacute;: Version 3.1</a> <small>Mein Dokumentationswerkzeug José ist nun in Version 3.1 verf&uuml;gbar. Neben...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://vg01.met.vgwort.de/na/cb998f70191e4a8693dfef51dfd843cc" width="1" height="1" alt="" align="left" />
<p><a href="http://www.faq-o-matic.net/wp-content/uploads/2010/05/image10.png"><img style="border-right-width: 0px; margin: 0px 10px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://www.faq-o-matic.net/wp-content/uploads/2010/05/image_thumb10.png" width="130" height="104" /></a> Nach mehr als einem halben Jahr Betaphase* ist jetzt die Version 3.0 von José, unserem Dokumentationswerkzeug f&uuml;r Active Directory, erschienen. Die neue Fassung steht hier zum Download bereit.</p>
<p>José erzeugt Berichte &uuml;ber die Objekte und den logischen Aufbau einer Active-Directory-Dom&auml;ne und speichert sie im HTML-Format. Die Berichte sind in ihrem Umfang sehr weitgehend konfigurierbar und lassen sich &uuml;ber eine Kommandozeilen-Schnittstelle auch automatisiert erzeugen. Seit seinem ersten Erscheinen vor gut sieben Jahren wurde José weit &uuml;ber 60.000-mal heruntergeladen. Nat&uuml;rlich ist das Programm kostenlos.</p>
<p><em>* (Vielen Dank an alle Tester und insbesondere das </em><a href="http://www.mcseboard.de/" target="_blank"><em>MCSEboard.de</em></a><em> f&uuml;r die R&uuml;ckmeldungen und Anregungen!)</em></p>
<p> <span id="more-2359"></span>
</p>
<ul>
<li><a href="#download">Download</a> </li>
<li><a href="#ueberblick">&Uuml;berblick</a> </li>
<li><a href="#neu">Neu in dieser Version</a> </li>
<li><a href="#faq">FAQ</a> </li>
<li><a href="#detail">Detaillierte Beschreibung</a> </li>
</ul>
<h4><a name="download">Download</a></h4>
<p>Den Download der neuen Fassung findet ihr hier:</p>
Note: There is a file embedded within this post, please visit this post to download the file.
<h4><a name="ueberblick">&Uuml;berblick</a></h4>
<p>José ist ein skriptbasiertes Werkzeug auf Basis von Visual Basic Script (VBS). Der Quellcode ist frei einsehbar und steht zur Bearbeitung frei – bitte ber&uuml;cksichtigt aber das Copyright und weist bei evtl. Bearbeitungen auf die Urheber des urspr&uuml;nglichen Codes hin.</p>
<p>José liest Daten zur AD-Dom&auml;ne des angemeldeten Windows-Benutzers aus und schreibt sie in seine Berichtsdatei. Das Programm &auml;ndert nichts an der Dom&auml;ne und ist daher “sicher”. Allerdings kann es in gro&szlig;en Umgebungen durchaus vorkommen, dass José eine erhebliche Netzwerk- und Systemlast erzeugt.</p>
<p>Die wesentlichen ausf&uuml;hrbaren Dateien sind:</p>
<ul>
<li><strong>Jose.hta:</strong> Ein Doppelklick auf diese Datei startet den “interaktiven Modus” des Programms. Es &ouml;ffnet sich ein Konfigurationsfenster f&uuml;r den Bericht. Ein Klick auf “Jetzt dokumentieren” erzeugt den Bericht. </li>
<li><strong>JoseExec.vbs:</strong> Dies ist die Kommandozeilenschnittstelle f&uuml;r José. Diese Datei bitte nicht per Doppelklick starten, sondern aus einem CMD-Fenster mit vorangestelltem “cscript”:      <br /><em>cscript JoseExec.vbs /d:&lt;Definition&gt; [/r:&lt;Report&gt;] [/t:&lt;Titel&gt;] [/f:&lt;Filter&gt;]</em>      <br />N&auml;heres siehe in der Hilfedatei bzw. weiter unten in diesem Artikel. </li>
<li><strong>Standard-Reports.bat:</strong> Dieser Batch erzeugt vollautomatisiert vier Standardberichte zur aktuellen Dom&auml;ne:
<ul>
<li>Allgemeine technische und logische Dom&auml;nen-Informationen </li>
<li>&Uuml;bersicht &uuml;ber Gruppenrichtlinien </li>
<li>&Uuml;bersicht &uuml;ber Exchange-Mailobjekte </li>
<li>&Uuml;bersicht &uuml;ber Benutzer, Gruppen und Computer </li>
</ul>
</li>
<li><strong>Jose-VersionCheck.vbs:</strong> Dieses kleine Skript pr&uuml;ft im Web, ob eine neuere Version von José vorliegt. </li>
</ul>
<p>José ben&ouml;tigt keine Installation. Bitte das Zip-Archiv an eine beliebige Stelle entpacken. Vereinzelt haben wir die R&uuml;ckmeldung erhalten, dass José sich nicht aus einem Ordner auf dem Desktop starten l&auml;sst; in dem Fall bitte einen anderen Ordner probieren. Die fertigen Berichte liegen im Unterverzeichnis “Reports” und lassen sich per Doppelklick &ouml;ffnen. Um sie an eine andere Stelle zu kopieren, bitte entweder die “Seite speichern”-Funktion des Browsers verwenden oder den gesamten José-Ordner kopieren, weil die Reports intensiv Dateien aus dem Ordner “Dateien” einbinden.</p>
<p>Einige Daten, die José ausliest, lassen sich derzeit mit kaum einem anderen Werkzeug effizient dokumentieren. Dazu geh&ouml;ren:</p>
<ul>
<li>Password Setting Objects </li>
<li>Security ID (Object SID und SID History) </li>
<li>Kennwortrichtlinien </li>
<li>Einstellungen f&uuml;r Tombstone und AD-Papierkorb </li>
<li>Datum des letzten AD-Backup </li>
<li>Erlaubte Anmeldezeiten f&uuml;r Benutzer (logonHours) </li>
<li>AD-Schema-Version, Exchange-Schema-Version </li>
</ul>
<p>José l&auml;sst sich leicht um weitere Attribute erweitern, die es von selbst nicht ausliest. F&uuml;r die wichtigsten Attribute (Textattribute, ein- oder mehrwertig) gen&uuml;gt hierf&uuml;r ein einfacher Eintrag in der “Definitionsdatei”, die den Bericht konfiguriert.</p>
<h4><a name="neu">Neu in dieser Version</a></h4>
<p>In Version 3.0 hat Ansgar Wiechers den Skriptcode von JoseExec.vbs komplett neu aufgebaut. Der Code ist nun leichter zu warten und zu erweitern. Dadurch hat sich allerdings auch die Betriebsweise des Skripts ge&auml;ndert, sodass es in vielen F&auml;llen mehr Zeit ben&ouml;tigt. Das halten wir aber f&uuml;r gut vertretbar.</p>
<p>Folgende funktionale &Auml;nderungen gibt es im Detail (vgl. auch die Datei ChangeLog.txt):</p>
<ul>
<li>Trust-Attribute hinzugef&uuml;gt </li>
<li>Unterst&uuml;tzung f&uuml;r Password Settings Objects auf Dom&auml;nenebene und bei Usern </li>
<li>Datum des letzten AD-Backup hinzugef&uuml;gt </li>
<li>Abgefragten DC ausgeben </li>
<li>Auswertung Anmeldezeiten (LogonHours) hinzugef&uuml;gt </li>
<li>TS-Profildaten werden mit zwei Techniken ausgelesen (aber msTS* im AD noch nicht genutzt &#8230;) </li>
<li>&quot;descriptions&quot; jetzt optional </li>
<li>Tombstone- und Papierkorb-Einstellungen </li>
<li>Kennwortrichtlinien </li>
<li>Datum des letzten AD-Backup </li>
<li>Auswertung Anmeldezeiten (LogonHours) </li>
<li>Korrektur AD-Schema 2008 R2 RTM, Erg&auml;nzung Exchange-Schema 2010 RTM; Betriebsmodus f&uuml;r 2008 R2 erg&auml;nzt </li>
</ul>
<h4><a name="faq">FAQ</a></h4>
<p>Hier ein paar Antworten auf h&auml;ufig gestellte Fragen.</p>
<ul>
<li><strong>L&auml;sst sich der Bericht dynamisch gestalten, sodass man z.B. OUs auf- und zuklappen kann? </strong>      <br />Nein, das geht derzeit nicht. Wir haben es aber auf der Roadmap f&uuml;r die n&auml;chste Major-Version. </li>
<li><strong>Gibt es José auch in anderen Sprachen als deutsch? </strong>      <br />Nein. Wir pr&uuml;fen, ob wir sowas umsetzen k&ouml;nnen. Da das aber erhebliche &Auml;nderungen am Code bedeutet, k&ouml;nnen wir dazu keine n&auml;heren Sch&auml;tzungen abgeben. </li>
<li><strong>Kann man spezielle Filter angeben, um nur Objekte auszugeben, die Kriterium ABC erf&uuml;llen? </strong>      <br />Nein. José liest immer alle Objekte bestimmter Klassen in einem ganzen Verzeichnisbaum aus. Wer bestimmte Filter ben&ouml;tigt (z.B. um nur Objekte zu sehen, deren Kennwort abgelaufen ist oder &auml;hnlich), sollte Werkzeuge nutzen, die darauf ausgelegt sind. Solche Werkzeuge gestatten die Angabe von Filtern in LDAP-Syntax oder auf andere Weise. Dazu geh&ouml;ren etwa die ds*-Tools ab Windows Server 2003, csvde.exe seit Windows 2000, AdFind von joeware.net, der LDAP Explorer von Philipp F&ouml;ckeler, Carmen von uns oder viele, viele andere.      <br />Josés Berichte lassen sich auf bestimmte Objektklassen (Benutzer, Gruppen, Computer usw.) sowie auf ein eigenes Set von auszuwertenden Attributen eingrenzen. Weiterhin gestattet José die Angabe eines Start-Containers (meist einer OU), von der aus es das AD liest. Mehr wird es nicht geben, weil wir keinen Sinn darin sehen, Werkzeuge nachzubauen, die es bereits gibt. </li>
<li><strong>Ich m&ouml;chte einen Bericht im CSV-Format (oder in einem anderen Format) erzeugen. </strong>      <br />Dann ist José nicht das richtige Werkzeug. José erzeugt HTML-Reports und wird sich auch weiterhin darauf beschr&auml;nken.      <br />Wenn du einen Bericht als CSV-Datei oder in anderen Formaten ben&ouml;tigst, schau dir eines der vielen anderen Werkzeuge an, z.B. csvde.exe (Bordmittel seit Windows 2000), AdFind von joeware.net, den AD Explorer von Sysinternals, den LDAP Explorer von Philipp F&ouml;ckeler, Carmen oder andere. </li>
<li><strong>Kann ich Attribut “XYZ” mit José dokumentieren? </strong>      <br />Die Chance ist gro&szlig;, dass José das von dir gew&uuml;nschte Attribut bereits von selbst auswerten kann. Die grafische Oberfl&auml;che in Jose.hta enth&auml;lt nur einen Teil dessen, was José beherrscht. Wenn das Attribut einen Textwert enth&auml;lt, wird José es mit Sicherheit auslesen k&ouml;nnen, du musst ihn nur dazu auffordern. Sieh dazu in der Hilfedatei nach. </li>
<li><strong>José bricht seine Ausf&uuml;hrung ab. Der Bericht ist nicht vollst&auml;ndig.</strong>      <br />Es kann immer vorkommen, dass der Code einen Fehler hat oder dass José auf Gegebenheiten st&ouml;&szlig;t, mit denen er nicht umgehen kann (z.B. fehlende Berechtigungen). In solchen F&auml;llen kannst du uns unterst&uuml;tzen, indem du dich mit einer konkreten Fehlerbeschreibung bei uns meldest. Meistens ben&ouml;tigen wir dann ein Debug-Protokoll und n&auml;here Angaben zur Umgebung, um den Fehler feststellen zu k&ouml;nnen. Da das Debug-Protokoll Daten enth&auml;lt, die schutzw&uuml;rdig sind, sprechen wir das im Einzelfall mit dir ab. Bitte habe aber Verst&auml;ndnis, dass wir keine Korrektur versprechen k&ouml;nnen und noch weniger eine feste Bearbeitungszeit. Allgemein gibt es keinen Support f&uuml;r José, aber im Fall von Fehlern schauen wir gern, was wir tun k&ouml;nnen. </li>
<li><strong>Meine AD-Umgebung ist recht gro&szlig;. Kann José damit umgehen?</strong>      <br />José ist nicht optimiert f&uuml;r effiziente Abfragen und auch nicht f&uuml;r sehr gro&szlig;e Umgebungen. Wir haben ihn bereits erfolgreich in Dom&auml;nen mit mehreren tausend Objekten ausgef&uuml;hrt. Es kann aber durchaus sein, dass eine Dom&auml;ne zu gro&szlig; f&uuml;r José ist. In solchen F&auml;llen kann es helfen, dass du den Report auf bestimmte OUs eingrenzt und so evtl. mehrere Einzelberichte erzeugst. </li>
<li><strong>Wo erhalte ich Support f&uuml;r José?       <br /></strong>Wir gew&auml;hren keinen Support f&uuml;r José und k&ouml;nnen auch keine Verantwortung f&uuml;r Fehler, Probleme oder Datenverluste &uuml;bernehmen, die in deiner Umgebung auftreten! <em>(Und bitte: Wir meinen das ernst!)</em>      <br />Falls du in der Community nach Unterst&uuml;tzung fragen oder &uuml;ber José diskutieren m&ouml;chtest, empfehlen wir unserer Partnerforum <a href="http://www.mcseboard.de/" target="_blank">MCSEboard.de</a>. </li>
</ul>
<h4><a name="detail">Detaillierte Beschreibung</a></h4>
<p><em>(Der folgende Text entspricht der mitgelieferten Hilfe der Version 3.0.)</em></p>
<h5>José Active-Directory-Dokumentation 3.0</h5>
<p>José gr&uuml;&szlig;t!</p>
<p>Was das ist: José ist ein kleines, HTML- und skriptbasiertes Tool zur Dokumentation der Objekte des Active Directory. Es liest dabei das Verzeichnis aus und generiert eine HTML-Datei, die Informationen &uuml;ber OUs, Benutzer, Gruppen, Computer, Policies usw. anzeigt.</p>
<p>Was das nicht ist: Und José generiert keine dynamischen Seiten, d. h. es ist nicht m&ouml;glich, die angezeigte Ordnerstruktur nachtr&auml;glich auf- oder zuzuklappen oder &Auml;hnliches.</p>
<p>Und: José liest das AD nur aus und &auml;ndert nichts. Daher ben&ouml;tigt es keine Schreibrechte im AD und kann auch mit normalen Benutzerrechten ausgef&uuml;hrt werden (in dem Fall k&ouml;nnen aber fehlende Berechtigungen dazu f&uuml;hren, dass José einiges nicht lesen kann). José ist daher &quot;sicher&quot; in Bezug auf Active Directory.</p>
<p>Vorsicht aber: José ist f&uuml;r &uuml;berschaubare Umgebungen konzipiert. Da die Abfragen, die José verwendet, nicht besonders optimiert sind, kann es in gro&szlig;en Umgebungen zu langen Wartezeiten sowie u.U. zu gr&ouml;&szlig;erer Netzwerklast kommen. Zudem sollte der erzeugte Report nicht zu gro&szlig; werden, weil die Anzeige im Browser sonst problematisch werden kann. Umgebungen mit mehreren tausend Objekten sind allerdings schon erfolgreich dokumentiert worden. Wer sehr gro&szlig;e Umgebungen verwaltet, sollte seine Reports daher immer auf eine bestimmte Ebene oder eine bestimmte Objektklasse eingrenzen und z.B. mit mehreren Teil-Reports arbeiten.</p>
<h6>Neuer Code seit Version 3.0</h6>
<p>In Version 3.0 hat Ansgar Wiechers den Skriptcode von JoseExec.vbs komplett neu aufgebaut. Der Code ist nun leichter zu warten und zu erweitern. Dadurch hat sich allerdings auch die Betriebsweise des Skripts ge&auml;ndert, sodass es in vielen F&auml;llen mehr Zeit ben&ouml;tigt. Das halten wir aber f&uuml;r gut vertretbar.</p>
<p>Ab Version 3.0 gibt José die Beschreibung (description) von Objekten nur optional aus. Diese Option ist allerdings standardm&auml;&szlig;ig aktiviert. Sie findet sich in jose.hta oben links bei den allgemeinen Optionen. In der Definitionsdatei steuert die Angabe &quot;description&quot; im Abschnitt &quot;[common]&quot; das Verhalten &#8211; fehlt sie, gibt José keine Beschreibungen aus.</p>
<h5>Benutzung</h5>
<p>Seit Version 2.0 hat José zwei Betriebsarten:</p>
<ol>
<li>Interaktiver Betrieb mit GUI </li>
<li>Skriptgesteuerter Betrieb per Kommandozeile </li>
</ol>
<p>Aus diesem Grund besteht José nun aus zwei ausf&uuml;hrbaren Dateien: <em>Jose.hta</em> und <em>JoseExec.vbs</em>. Wer wie bislang arbeiten will, nutzt auch weiterhin nur die Jose.hta.</p>
<h6>Interaktiver Modus: Jose.hta</h6>
<p>José wird gestartet durch Doppelklick auf &quot;jose.hta&quot;. Es &ouml;ffnet sich ein Formular, in dem der zu erzeugende Bericht konfiguriert werden kann. Die einzelnen Abschnitte beziehen sich auf unterschiedliche Objektklassen des Active Directory (Benutzerkonten, Gruppen usw.). Dabei gilt stets: Der oberste, fett gedruckte Eintrag einer Liste gibt an, ob die zugeh&ouml;rige Klasse &uuml;berhaupt angezeigt wird. So l&auml;sst sich steuern, welche Objektklassen im Report erscheinen sollen. Wenn eine Klasse gar nicht angezeigt wird, werden die einzelnen Attribute automatisch ignoriert.</p>
<p>Die LDAP-Namen der Attribute, die ein- oder abgeschaltet werden k&ouml;nnen, werden in einem kleinen Infofenster angezeigt, wenn man mit der Maus auf das K&auml;stchen zeigt. Beim Start von José ist ein Standard-Set von Attributen ausgew&auml;hlt, die in den meisten F&auml;llen einen interessanten Bericht ergeben. Diese Standardauswahl l&auml;sst sich durch den Button &quot;Standardauswahl&quot; wiederherstellen (die Buttons &quot;alle Eigenschaften&quot; und &quot;keine Eigenschaften&quot; sollten selbsterkl&auml;rend sein).</p>
<p>Wenn man &quot;OU-Struktur und Objekte&quot; abschaltet, geht José die Ordner und OUs nicht durch. Das ist n&uuml;tzlich f&uuml;r Reports, die nur die Dom&auml;nendaten oder nur die GPO-Liste ausgeben sollen.</p>
<h6>Filtern</h6>
<p>Beim Start wird ab Version 2.0 nicht mehr automatisch die Active-Directory-Struktur eingelesen. Dies hatte sich in gro&szlig;en Umgebungen als hinderlich herausgestellt. Einen Ebenen-Filter kann man nun ganz oben in das Feld &quot;Ausgabe ab OU&quot; in LDAP-Notation eintragen. Beispiel: <em>OU=EDV, OU=Benutzer, DC=faq-o-matic, DC=net</em>. Wer die Auswahl lieber per Maus treffen m&ouml;chte, klickt auf den Button &quot;OUs anzeigen&quot; neben dem Eingabefeld. Daraufhin blendet José im linken Bereich die AD-Struktur mit Optionsfeldern ein (Achtung: In einer sehr komplexen Umgebung kann das einen Moment dauern!). Durch Markieren einer OU oder eines Ordners wird dessen LDAP-Name in das Filterfeld eingetragen. Dadurch kann man die Ausgabe der Objekte auf die gew&auml;hlte OU bzw. den ausgew&auml;hlten Ordner (und untergeordnete) beschr&auml;nken. Sofern die Ausgabe auf eine bestimmte Ebene beschr&auml;nkt wird, erscheint im Bericht ein Hinweis darauf.</p>
<h6>Diverses</h6>
<p>Achtung bei Gruppenmitgliedschaften: Die Auswahl von &quot;Gruppenmitgliedschaften&quot; unter &quot;Benutzerkonten&quot; bzw. von &quot;Mitglieder&quot; unter &quot;Gruppen&quot; f&uuml;hrt u. U. zu einer recht langen Bearbeitungszeit.</p>
<p>Bei Auswahl von &quot;Gruppenrichtlinien&quot; werden nur die Namen der Richtlinien angezeigt, nicht aber die Einstellungen, die innerhalb der Richtlinien gesetzt sind. Diese Informationen lassen sich (derzeit) nicht per Skript auslesen. Hierf&uuml;r empfehlen wir die Skripts der Group Policy Management Console (GPMC), insbesondere &quot;GetReportsForAllGPOs.wsf&quot;.</p>
<p>Die Terminalserver-Einstellungen (TS-Profil und TS-Home) kann José zwar auf zwei Arten auslesen (ADSI-Zugriff auf &quot;userParameters&quot; und die neuen &quot;msTS*&quot;-LDAP-Felder seit Windows Server 2008), allerdings funktioniert tats&auml;chlich nur die erste Variante, weil die in Windows Server 2008 neu eingef&uuml;hrten Felder im AD noch gar nicht implementiert sind.</p>
<h6>Report ausf&uuml;hren</h6>
<p>Im Eingabefeld &quot;Report-Name&quot; kann man eine &Uuml;berschrift f&uuml;r den generierten Bericht angeben. Zusammen mit den Optionen &quot;Legende anzeigen&quot;, &quot;Objektname anstelle des LDAP-Namens anzeigen (bei Gruppenmitgliedschaften)&quot; und &quot;Eigenschaften in Umgangssprache&quot; ist die Dokumentation auch f&uuml;r Nicht-Techies geeignet.</p>
<p>Unter &quot;Report-Dateiname&quot; kann man einen Dateinamen f&uuml;r den Report angeben &#8211; nur den Namen, keinen Pfad (die Endung &quot;.htm&quot; f&uuml;gt José bei Bedarf selbst hinzu). Bleibt das Feld leer, so erzeugt José selbst einen Namen. Achtung: Wenn der gew&auml;hlte Dateiname bereits vergeben ist, &uuml;berschreibt José den vorhandenen Report.</p>
<p>Ein Klick auf den Button &quot;Jetzt dokumentieren!&quot; startet die Dokumentation. Es &ouml;ffnet sich ein schwarzes CMD-Fenster, das nicht geschlossen werden darf! Es kann nun durchaus ein paar Minuten dauern, in denen das Fenster aussieht, als passiere nichts mehr. Nur Geduld! Nach dem Generieren des Reports gibt es unten unter &quot;Status&quot; Informationen und ggf. Fehlermeldungen. Sobald die Doku fertig ist, zeigt ein kleines Feld an &quot;OK&quot;, und im Statusbereich steht ein Link auf die generierte HTML-Datei.</p>
<p>Alternativ bzw. zus&auml;tzlich kann man die vorhandenen Einstellungen auch als Definitions-Datei speichern, um einen gleichartigen Report mit JoseExec.vbs auszuf&uuml;hren. Hierzu dr&uuml;ckt man den Button &quot;Report-Definition speichern&quot;. José fragt dann nach einem Namen f&uuml;r die Definitions-Datei, den man frei w&auml;hlen kann (Angabe ohne Pfad &#8211; nur der Dateiname!). Die Definitions-Dateien liegen in dem Unterordner /Definitions.</p>
<h6>Automatisierter Modus: JoseExec.vbs</h6>
<p>Wer José automatisiert oder mit einer vorhandenen Berichts-Definition ausf&uuml;hren m&ouml;chte, kann dies &uuml;ber das zus&auml;tzliche Skript &quot;JoseExec.vbs&quot; tun. JoseExec.vbs entnimmt die Definition des Reports aus einer Definitionsdatei im Ordner /Definitions. Das Skript wird mit &quot;cscript.exe&quot; in einem CMD-Fenster (oder per Batch) aufgerufen und hat mehrere Kommandozeilenoptionen:</p>
<p><strong>cscript JoseExec /d:&lt;Definition&gt; [/r:&lt;Report&gt;] [/t:&lt;Titel&gt;] [/f:&lt;Filter&gt;]</strong></p>
<ul>
<li>/d: Name einer José-Definitionsdatei     <br />Die Angabe erfolgt ohne Dateipfad &#8211; nur der Dateiname mit Endung! </li>
<li>/r: (optional) Name der zu erzeugenden Report-Datei (HTML)     <br />Die Angabe erfolgt ohne Dateipfad &#8211; nur der Dateiname. Achtung: Die Datei wird ohne R&uuml;ckfrage &uuml;berschrieben! </li>
<li>/t: (optional) Titel des Berichts </li>
<li>/f: (optional) LDAP-Objektfilter (Container/OU) </li>
</ul>
<p>Der Parameter &quot;/d&quot; ist zwingend. Bei falschem Aufruf (oder bei Aufruf mit /?) zeigt JoseExec.vbs eine Syntax-&Uuml;bersicht an.</p>
<p>Es empfiehlt sich, alle Angaben in Anf&uuml;hrungsstriche einzufassen (zwingend, sobald Leerzeichen enthalten sind).</p>
<p>Beispiel:</p>
<pre>cscript JoseExec /d:&quot;DomainData.txt&quot; /r:&quot;MyDomainData.htm&quot; /t:&quot;Meine Dom&auml;ne&quot; /f:&quot;OU=EDV,OU=Benutzer,DC=domain,DC=tld&quot;</pre>
<h6>Format der Definitions-Datei</h6>
<p>Die Definitionsdatei ist eine einfache Textdatei mit einem recht simplen Aufbau. Hier ein Beispiel:</p>
<pre>; --------------------------------------------
; José-Definitionsdatei AD-Definition-Beispiel.txt
; Erzeugt: 10.03.2010 06:44:20
; von: FAQ-O-MATIC\Nils
; mit: José AD-Dokumentation 3.0
; Download auf http://www.faq-o-matic.net
; --------------------------------------------
[Meta]
ReportName=Active Directory
ReportFileName=AD-Doku 15.09.2008 16-27-08.htm
ObjectFilter=
ShowSymbols
ShowNaturalName
ShowFriendlyName
[Common]
fsmo
trust
folder
OU
gpo
number
Modify
[Printer]
serverName
printShareName
[Group]
[Contact]
[User]
samAccountName
userPrincipalName
profilePath
homeDirectory
homeDrive
scriptPath</pre>
<p>Zeilen, die mit ; beginnen, sind Kommentare. Sie werden ignoriert. Achtung: Kommentare m&uuml;ssen in eigenen Zeilen stehen und k&ouml;nnen nicht an vorhandene Zeilen angef&uuml;gt werden.</p>
<p>Jeder Abschnitt beginnt mit einem Label in eckigen Klammern. Derzeit kennt José die Labels [Meta], [Common], [Printer], [Group], [Contact] und [User]. Sie stehen &#8211; au&szlig;er Meta und Common &#8211; f&uuml;r die Objektklassen, die José dokumentiert.</p>
<p>Im Abschnitt [Meta] hinterlegt José die Report-Optionen. Der Name des Berichts, der Report-Dateiname und der Ebenen-Filter k&ouml;nnen mit Hilfe der Kommandozeilenparameter /r, /t bzw. /f von JoseExec.vbs &uuml;bersteuert werden &#8211; sobald sie also im Kommando auftauchen, wertet JoseExec die jeweilige Angabe in der Definitionsdatei nicht mehr aus.</p>
<p>Im Abschnitt [Common] listet José die aktiven Optionen auf, die im grafischen Fenster ganz oben links stehen.</p>
<p>Die weiteren Abschnitte sind simpel: Wenn ein Abschnitt zu einer Objektklasse auftaucht, wird diese Objektklasse (z.B. User) mindestens mit dem Namen im Report dokumentiert. Unter dem Label folgen dann die zu ber&uuml;cksichtigenden Attribute.</p>
<h6>Reports erweitern</h6>
<p>Die Architektur von JoseExec.vbs erlaubt es, Reports um neue Attribute zu erweitern bzw. vorhandenen Definitions-Dateien nachtr&auml;glich zu bearbeiten. Dies geschieht mit einem einfachen Texteditor. Um Attribute aus einer Definition zu entfernen, l&ouml;scht man einfach die Angabe des Attributs. Um neue Attribute aufzunehmen, tr&auml;gt man den Attributnamen einfach bei der gew&uuml;nschten Klasse ein (z.B. employeeID). Das eignet sich allerdings nur f&uuml;r Textattribute. Mit mehrwertigen Attributen kann José umgehen. Problematisch sind Bin&auml;rattribute, weil diese nicht ohne Weiteres per Skript zug&auml;nglich sind.</p>
<p>F&uuml;r folgende Attribute hat José eine eigene Unterst&uuml;tzung eingebaut &#8211; sie sind nur &uuml;ber die Erweiterung der Definitionsdatei zug&auml;nglich:</p>
<ul>
<li>logonHours (erlaubte Anmeldezeiten) </li>
<li>pwdLastSet (letzte Kennwort&auml;nderung) </li>
<li>lastLogonTimestamp (letztes repliziertes Anmeldedatum) </li>
<li>canonicalName (OU-Pfad wie in der Erweiterten Ansicht unter &quot;Objekt&quot; als Kanonischer Name angezeigt) </li>
</ul>
<p>Ein Beispiel f&uuml;r eine erweiterte Datei:</p>
<pre>; --------------------------------------------
; José-Definitionsdatei AD-Definition-Beispiel.txt
; Erzeugt: 10.03.2010 06:44:20
; von: FAQ-O-MATIC\Nils
; mit: José AD-Dokumentation 3.0
; Download auf http://www.faq-o-matic.net
; --------------------------------------------
[Meta]
ReportName=Active Directory
ReportFileName=AD-Doku-Beispiel.htm
ObjectFilter=
ShowSymbols
ShowNaturalName
ShowFriendlyName
[Common]
fsmo
trust
folder
OU
gpo
number
Modify
description
[User]
samAccountName
userPrincipalName
; ab hier: manuell hinzugef&uuml;gt
distinguishedName
logonHours
pwdLastSet
lastLogonTimestamp
employeeID</pre>
<p>Der Parser f&uuml;r die Definitionsdatei ist recht robust. Die Reihenfolge der Abschnitte ist egal, Leerzeilen st&ouml;ren nicht. Attribute, die nicht existieren, werden einfach ignoriert. Gro&szlig;- und Kleinschreibung ist egal.</p>
<h5>Reports</h5>
<p>Die generierten HTML-Dateien werden ausschlie&szlig;lich im Unterverzeichnis Reports gespeichert (ab und an mal leeren), das bei Bedarf erzeugt wird. Wer diese generierten Dateien weitergeben oder woanders speichern will, hat mehrere M&ouml;glichkeiten:</p>
<ul>
<li>die beiden Ordner &quot;Dateien&quot; und &quot;Reports&quot; gemeinsam kopieren. Sie m&uuml;ssen auf derselben Ebene liegen, damit die Grafiken richtig eingef&uuml;gt werden. </li>
<li>die HTML-Datei im Internet-Explorer &ouml;ffnen und &uuml;ber&#160; [Datei -&gt; Speichern unter ... (Dateityp: &quot;Website, komplett (.htm, .html)&quot;)] abspeichern. So werden alle ben&ouml;tigten &quot;*.gif&quot;-Bilder und das Stylesheet in ein Unterverzeichnis des gew&auml;hlten Speicherortes kopiert und die Links relativ dazu angepasst. </li>
</ul>
<h5>Standard-Reports</h5>
<p>Im José-Hauptverzeichnis gibt es eine Datei &quot;Standard-Reports.bat&quot;. Sie f&uuml;hrt automatisiert vier vordefinierte AD-Reports aus, die f&uuml;r viele Diagnosezwecke n&uuml;tzliche Informationen zusammenstellen. Dabei erzeugt sie die Dateinamen automatisch, indem sie den NetBIOS-Namen der Dom&auml;ne sowie eine Zufallszahl einf&uuml;gt. Dadurch kann man die Standard-Reports auch wiederholt ausf&uuml;hren, ohne die vorherigen Daten zu verlieren. Zur Ausf&uuml;hrung reichen ein Doppelklick auf &quot;Standard-Reports.bat&quot; sowie etwas Geduld.</p>
<h5>Hinweis bei Kontenattributen</h5>
<p>Bei der Auswertung verschiedener Objekte oder Attribute kann es Berechtigungsprobleme geben. Diese f&uuml;hren dazu, dass Informationen zu deaktivierten, gesperrten oder ablaufenden Konten &#8211; ggf. aber auch andere Informationen &#8211; nicht richtig dargestellt werden.</p>
<p>Um verl&auml;ssliche Informationen zu diesen Objekten und Attributen zu erhalten, f&uuml;hren Sie José bzw. JoseExec mit einem Konto aus, das volle Leserechte auf die relevanten Attribute hat (z.B. ein Dom&auml;nen-Administratorkonto). Unter Windows Vista/Windows 7 und Windows Server 2008 bzw. R2 sollten Sie José bzw. JoseExec dazu von einer Eingabeaufforderung aus starten, die Sie ausdr&uuml;cklich als Administrator gestartet haben.</p>
<p>(N&auml;heres zu den Besonderheiten von Vista bis Windows Server 2008 R2 finden Sie in <a href="http://www.faq-o-matic.net/2008/02/22/benutzerkontensteuerung-uac-richtig-einsetzen/">diesem</a> Artikel.)</p>
<p>Die freie Weitergabe des Programms ist erlaubt. Ebenso ist es erlaubt, den Quelltext zu &auml;ndern. Die Autoren dieses Programms &uuml;bernehmen allerdings keinerlei Gew&auml;hr oder Support!</p>
</p>
<hr noshade="noshade" />
<p>© 2002-2010 Nils Kaczenski, Nils Weinhold und Ansgar Wiechers&#160; &#8211; Freie Weitergabe erlaubt, keine Gew&auml;hr!</p>
<h3>Verwandte Beiträge:</h3><ol>
<li><a href='http://www.faq-o-matic.net/2008/11/10/jose-21-schon-wieder-ein-kleines-update/' rel='bookmark' title='Jose 2.1: Schon wieder ein kleines Update'>Jose 2.1: Schon wieder ein kleines Update</a> <br /><small>Eigentlich sollte die Beta-Phase genau diese Situation vermeiden &#8230; aber...</small></li>
<li><a href='http://www.faq-o-matic.net/2009/05/08/jose-22-fehlerkorrektur-und-kleine-ergaenzung/' rel='bookmark' title='José 2.2: Fehlerkorrektur und kleine Erg&auml;nzung'>José 2.2: Fehlerkorrektur und kleine Erg&auml;nzung</a> <br /><small>Soeben habe ich die Version 2.2 von José online gestellt....</small></li>
<li><a href='http://www.faq-o-matic.net/2011/07/06/jos-version-3-1/' rel='bookmark' title='Jos&eacute;: Version 3.1'>Jos&eacute;: Version 3.1</a> <br /><small>Mein Dokumentationswerkzeug José ist nun in Version 3.1 verf&uuml;gbar. Neben...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.faq-o-matic.net/2010/05/26/jos-version-3-0-ist-da/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

