Tools: PFContentReport

Alle Skripte sind Muster ohne jede Gewährleistung oder Funktionsgarantie. für Schäden bin ich nicht verantwortlich. Achten Sie auf Zeilenumbrüche bei der Übernahme.

Diese Skript ist primär für den Einsatz mit Exchange 2003 gedacht. In Exchange 2007/2010 gibt es leistungsfähige PowerShell Commandlets (Get-PublicFolderStatistics etc.), die das gleiche Ergebnis sehr viel einfacher bereit stellen.

Das Skript PFContentReport ist einer leistungsfähigere Möglichkeit der Inhaltsanalyse, als die PFReport bereit stellt. Während PFReport ab Exchange 2003 über WMI einfach nur die Größe der Ordner, die Anzahl der Elemente und deren Mailadressen auswertet und ausgibt, nutzt PFContentReport die MAPI-Schnittstelle, um die Inhalte der öffentlichen Ordner zu analysieren.

Die Funktion in Kürze

PFContentReport ist ähnlich wie MBReport ein VBScript, welches über CDO/MAPI und einem Profil sich mit dem Exchange Server verbindet. Allerdings analysiert es nun nicht alle Postfächer der Organisation, sondern durchläuft rekursiv alle öffentlichen Ordner um hieraus Daten zu extrahieren und zu berichten.

Dazu verbindet es sich mit dem aktuellen Benutzer per MAPI, sucht den Informationsspeicher mit dem Namen "Public Folder" oder "öffentliche Ordner" und arbeitet dann alle Ordner ab, die das Script "sehen" kann.

Einschränkungen

Damit sind natürlich auch gleich die "Probleme" und Grenzen dieses Skripts zu nennen:

  • Laufzeit
    Das Skript öffnet und liest jeden Ordner und die entsprechenden Inhalte aus. Das kann dauern und sollten Sie nicht über WAN machen. Der Aufruf auf dem Exchange Server ist eine Möglichkeit, die Laufzeit zu beschleunigen.
  • Berechtigungen
    Das Skript kann nur Ordner auswerten, die es erreichen kann. Sie müssten daher sicherstellen, dass das ausführende Konto auf alle Ordner zumindest ein "Leserecht" hat. Dieses Recht könnten Sie z.B.: per PFDavAdmin nachträglich addieren.
  • Entfernte Ordner und Replikate
    öffentliche Ordner liegen im Gegensatz zu Mailboxen nicht unbedingt auf einem Server, sondern können auf verschiedene Server oder sogar in andere Standorte repliziert sein. Das Skript agiert als Client und greift auf die Inhalte genauso zu, wie es ein Anwender mit Outlook tut. Es nutzt den "lokalen" Server, soweit möglich, aber kann ansonsten auch auf andere Server der Organisation in anderen Routinggruppen zugreifen, wenn "Public Folder Referrals" und IP-Routing stimmen.
    Das Skript kann aktuell nicht auf einen Standort beschränkt werden. Sie können dies aber beeinflussen, indem Sie das Skript mit einem Benutzer starten, der eben nur die gewünschten Ordner "sehen" kann.

Das Skript

Bitte haben Sie Verständnis dafür, dass ich dieses Skript nicht "öffentlich" bereit stelle, da es doch einige Last auf dem Server verursachen kann und es jedem Anwender eine Auswertung ohne weiteres Verständnis erlaubt.

Dieses Skript ist kein öffentlicher Download
Informationen, warum diese Skripte nicht öffentlich sind, finden Sie auf nicht public.

Sie können das Skript gerne als Administrator oder anderweitig verantwortliche Person erhalten. Schreiben Sie einfach eine Mail von ihrem Firmenaccount an mit dem Betreff "MSXFAQ: PFContentReport" und vergessen Sie nicht die Angabe ihres Namens der Adresse und ihrer Funktion.

Ausgabe

Das Script legt wie mittlerweile üblich bei meinen Skripten eine XML-Datei samt Stylesheet an, welche z.B. mit dem Internet Explorer angezeigt werden kann. Einer Weiterverarbeitung mit anderen Programmen steht damit auch der Weg offen.

  • PFContentReport-%date%-%time-report.xml
    Enthält eine Übersicht der Ordner mit der Anzahl der Objekte, der Größe, Datum des aktuellsten Objekts, die Nachrichtenklasse etc. Diese Datei kann mit Internet Explorer angezeigt werden. Hier ein Auszug
<?xml version="1.0" encoding="UTF-16"?>
<?xml-stylesheet type="text/xsl" href="PFContentReport.xsl"?>
<PFContentReport>
	<starttime>03.08.2006 15:38:46</starttime>
	<folder>
		<name>Test1</name>
		<path>\IPM_SUBTREE\All Public Folders\</path>
		<itemcount>3</itemcount>
		<itemclass>
		</itemclass>
		<itemsize>10068</itemsize>
		<itemsize2>10068</itemsize2>
		<intItemUnread>2</intItemUnread>
		<dtLastUnreadDate>03.08.2006 15:32:26</dtLastUnreadDate>
		<itemcount2>3</itemcount2>
		<itemclass2>IPM.Note,IPM.Document.inifile,IPM.Post</itemclass2>
	</folder>
	<folder>
		<name>Test11</name>
		<path>\IPM_SUBTREE\All Public Folders\Test1\</path>
		<itemcount>1</itemcount>
		<itemclass>
		</itemclass>
		<itemsize>726</itemsize>
		<itemsize2>726</itemsize2>
		<intItemUnread>0</intItemUnread>
		<dtLastUnreadDate>0</dtLastUnreadDate>
		<itemcount2>1</itemcount2>
		<itemclass2>IPM.Note</itemclass2>
	</folder>
	<totalmsg>5</totalmsg>
	<totalattachment>4</totalattachment>
	<totalfolder>1</totalfolder>
	<endtime>03.08.2006 15:38:59</endtime>
</PFContentReport>
  • PFContentReport-%date%-%time-attachment.xml
    Diese Datei enthält eine Übersicht aller Anlagen mit Name, Größe und Pfad für weitere Auswertungen. Hier ein Beispiel
<?xml version="1.0" encoding="UTF-16"?>
<pfattachmentreport>
	<starttime>03.08.2006 15:38:46</starttime>
	<attachment>
		<folder>\IPM_SUBTREE\All Public Folders\Test1</folder>
		<timestamp>21.07.2006 14:22:18</timestamp>
		<filename>ATT00038.txt</filename>
		<fileext></fileext>
		<filesize>264</filesize>
	</attachment>
	<attachment>
		<folder>\IPM_SUBTREE\All Public Folders\Test1</folder>
		<timestamp>21.07.2006 14:22:18</timestamp>
		<filename>test</filename>
		<fileext></fileext>
		<filesize>519</filesize>
	</attachment>
	<attachment>
		<folder>\IPM_SUBTREE\All Public Folders\Test1</folder>
		<timestamp>03.08.2006 15:32:26</timestamp>
		<filename>BOOT.INI</filename>
		<fileext>.INI</fileext>
		<filesize>3813</filesize>
	</attachment>
	<attachment>
		<folder>\IPM_SUBTREE\All Public Folders\Test1</folder>
		<timestamp>03.08.2006 15:32:52</timestamp>
		<filename>BGINFO.log</filename>
		<fileext>.log</fileext>
		<filesize>4186</filesize>
	</attachment>
</pfattachmentreport>

Zumindest die REPORT-Datei kann auch im Internet Explorer angezeigt werden:

Natürlich ist dieses Verfahren nur für wenige Ordner geeignet. Eine Weiterverarbeitung in Excel oder der direkte Import in eine Datenbank ist für größere Auswertungen natürlich anzuraten.

Weiterentwicklung

Für dieses Reporting habe ich noch einige Pläne, so dass damit auch in gewisser Weise "Richtlinien" durchgesetzt werden können. Wenn ich mir ein Konzept für öffentliche Ordner betrachte, dann könnten folgende Prüfungen interessant sein:

  • Richtlinien
    Viele Firmen haben "Richtlinien" in öffentlichen Ordnern, z.B.  im Bezug auf Inhalte, Alter, Antwortzeiten etc. Das Skript könnte die Einhaltung solcher Richtlinien prüfen oder sogar durchsetzen.
  • Archivierung
    Ein ganz anderer Ansatz wäre natürlich eine automatische Weiterverarbeitung von Inhalten, z.B. Archivieren alter Elemente und Ablegen als Datei. Löschen bestimmter Inhalte etc.
  • Eingrenzen des Suchraums
    Gerade die Problematik der replizierten Ordner und Menge macht es sinnvoll, die zu analysierenden Ordner auswählbar oder beschränkbar zu machen.

Sie sehen, dass die EinsatzMöglichkeiten sehr vielfältig sind

Weitere Links