Public Folder Management

Wenn Sie Exchange 2007 installiert haben und erstmals die Management Konsole starten, dann sieht die Struktur erst einmal recht aufgeräumt aus. Allerdings werden Sie keine Stelle finden, an der Sie die öffentlichen Ordnern verwalten können. Nur auf dem Server mit der Mailbox-Rolle können Sie zumindest die Datenbank mit den öffentlichen Ordnern verwalten.

MMC

Leider ist die Verwaltung von öffentlichen Ordnern bezüglich der Größen, Replikaten etc. auf Exchange 2007 aktuell nur mit der Exchange Management Shell möglich. Wenn Sie noch einen Exchange 2000/2003 Server in ihrer Organisation haben, dann können Sie mit dem Exchange 2000/2003 System Manager ebenfalls die Ordner über den Exchange 2000/2003 Public Folder Store verwalten. Eine Verbindung vom Exchange 2000/2003 ESM zum Exchange 2007 ist aber nicht möglich.

Verwalten per GUI

Erst ab Exchange 2007 SP1 ist es möglich, auch die öffentlichen Ordner per GUI zu verwalten. In der Toolbox finden Sie den Link zur Verwaltungskonsole der öffentlichen Ordner

Pf Verwaltung

Allerdings können Sie über die MMC z.B.: immer noch keine Berechtigungen vergeben. Da bleibt der PowerShell (Siehe weiter unten) vorbehalten.

Speziell auf "nicht englischen" Systemen kann es sein, dass Sie die Verwaltungskonsole gar nicht erst starten können. Hier hat wieder der Übersetzungsteufel derart zugeschlagen, dass die Werte in der Registrierung zwar "eingedeutscht" wurden, aber die Links im Dateisystem natürlich nicht. Also RegEdit aufmachen oder einfach folgende Zeilen als REG-Datei speichern und importieren:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Exchange\v8.0\AdminTools\Toolbox\PublicFolderManagementConsole]
"Name"="Public Folder Management Console"
"Description"="Ermöglicht die Verwaltung von öffentlichen Ordnern von Exchange."
"CommandFile"="\"bin\\Public Folder Management Console.msc\""
"CommandParameters"="\"bin\\Public Folder Management Console.msc\""

Und schon können Sie auch bei einer deutschen Installation die Ordner wieder verwalten.

Seit Exchange 2010 SP1 kann ein Administrator sogar wieder auf der GUI die Clientberechtigungen verwalten:

Allerdings muss man auch hier wieder im Hauptfenster sich in der mittleren Spalte befinden und nicht links im Baumdiagramm und die Einstellungen wirken nur auf den Ordner, d.h. können nicht weiter "vererbt" werden. Das geht dann alles wieder per PowerShell.

Verwaltung per PowerShell

Für die Verwaltung stehen eine ganze Gruppe von Befehlen bereit:

  • Get-PublicFolder / Set-PublicFolder / New-PublicFolder / Remove-PublicFolder
    Liest die Einstellungen des angegeben Ordners aus (Replikate, Grenzen etc.)
  • Get-PublicFolderAdministrativePermission / Add-PublicFolderAdministrativePermission / Remove-PublicFolderAdministrativePermission
    Verwaltet Administrative Berechtigungen auf dem Ordner (d.h. wer darf z.B. die Liste der Replikate verändern)
  • Get-PublicFolderClientPermission / Add-PublicFolderClientPermission / Remove-PublicFolderClientPermission
    Steuerung der Clientrechte. Dies kann ein Administrator aber auch über Outlook machen
  • Get-PublicFolderDatabase / Set-PublicFolderDatabase / New-PublicFolderDatabase / Remove-PublicFolderDatabase
    Steuerung der eigentlichen Datenbank. Vieles hiervon ist aber auch über die Exchange Management Console erreichbar
  • Get-PublicFolderStatistics
    Zeigt Statistische Informationen zu Ordnerinhalten an.
  • Update-PublicFolder / Update-PublicFolderHierarchy
    Stößt eine erneute Replikation von Ordnern und der Hierarchie an.

Von all diesen Programmen sind erst einmal die CMDlets zu "PublicFolder" und "get-PublicFolderStatistics" interessant.

Beispiele

Fangen wir zuerst einmal mit ein paar Beispielen an, die "nur lesend" arbeiten. Wir gehen dazu auf den Exchange 2007 Server, auf dem auch die Exchange Management Shell vorhanden und gestartet ist.

Ein einfaches "Get-PublicFolder" zeigt nur, dass es einen "IPM_SUBTREE" gibt:

getPublifolder

Natürlich unterstützt Exchange 2007 auch noch die "versteckten" Systemordner, in denen z.B. die Frei/Belegt-Zeiten oder Offline Adressbücher für Outlook 2003 und ältere Clients liegen. Diese muss man aber explizit mit dem Pfad angeben, damit diese auch von den CMDLets bearbeitet werden.

Durch die Angabe von "-recurse" wird die komplette Struktur durchlaufen und mit "fl parentpath,name" auch angezeigt

get-publicfolder recurse

Damit wissen Wir schon sehr viel für die nächsten Aktionen. Natürlich funktioniert dies auch mit der sichtbaren Ordnerstruktur "IPM_SUBTREE" ohne direkte anzeigen. Ein einfaches "Get-PublicFolder -Recurse | ft parentpath,name" reicht hier schon.

Interessant wird es nun, wenn Sie zum Ordner weitere Details anzeigen lassen. Mit "get-publicfolder | get-member" bekommt man neben den Methoden (haben ich ausgeblendet) auch die Properties, welche Sie ausgeben aber auch verändern können

[PS] C:\>get-publicfolder | get-member -MemberType "Property" | ft name

Name
----
AgeLimit
EntryId
HasSubFolders
HiddenFromAddressListsEnabled
Identity
IsValid
LocalReplicaAgeLimit
MailEnabled
MaxItemSize
Name
OriginatingServer
ParentPath
PerUserReadStateEnabled
PostStorageQuota
Replicas
ReplicationSchedule
RetainDeletedItemsFor
StorageQuota useDatabaseAgeDefaults useDatabaseQuotaDefaults useDatabaseReplicationSchedule useDatabaseRetentionDefaults

Um also eine Liste der öffentlichen Ordnern mit den Grenzwerten zu erhalten ist folgende Zeile sinnvoll:

get-publicfolder -recurse | ft name, *quota* -AutoSize

List PF Quota

Gar nicht so schwer oder ?. Der nächste Schritt ist dann natürlich das ändern solcher Wert über "Set-PublicFolder". Aufgrund der vielen möglichen Änderungen erspare ich mir hier die Beschreibung einzelner Spezialfälle. Die BPOS Hilfe liefert sehr viel Anschauungsmaterial hierzu. Zwei Beispiele will ich als Muster vorgeben;

Set-PublicFolder -Identity \Testordner -MaxItemSize 10MB .Replicas {SRV01\PF1, SRV02\PF2}
Get-PublicFolder "\NON_IPM_SUBTREE\OFFLINE ADDRESS BOOK" -recurse | Set-PublicFolder -Replicas SRV01

Das erste Beispiel setzt einfach für einen vorgegebenen Ordner die maximale Größe der Elemente und die Replikate während das zweite Beispiel aufzeigt, wie man über eine Verkettung (PIPE) erst mit "GET-PublicFolder" den Ordner "Offline Address Book" samt unterordner erhält und dann auf einen Rutsch auf einen anderen Server verschiebt.

Wenn Sie die Ordner nicht über Outlook anlegen und löschen, dann können Sie auch mit "New-PublicFolder" und "Remove-PublicFolder" arbeiten.

Statistische Auswertungen mit Get-PublicFolderStatistics

Der zweite interessante Befehl ist natürlich "Get-PublicFolderStatistics", welcher etwas über die Inhalte in den Ordnern sagen kann. Auch hier hilft erst mal "Get-Member" und zu sehen, welche Ausgaben überhaupt verfügbar sind.

Get-PublicFolderStatistics | get-member -MemberType "Property" | ft name
Name ----
AdminDisplayName AssociatedItemCount
ContactCount
CreationTime
DatabaseName
DeletedItemCount
EntryId
ExpiryTime
FolderPath
IdentitysDeletePending
IsValid
ItemCount
LastAccessTime
LastModificationTime
Name
OriginatingServer
OwnerCount
ServerName
StoragegroupName
TotalAssociatedItemSize
TotalDeltedItemSize
TotalItemSize

Wir können die Ausgaben von Get-PublicFolderStatistics mit "where" filtern und mit "format-table" ausgeben. Hier ein Beispiel

Get-PublicFolderStatistics | where {$_.TotalItemSize -ge 100MB} | ft folderpath, name, TotalItemSize -AutoSize

FolderPath                Name                TotalItemSize
----------                ----                -------------
FaxEingang                FaxEingang          602254327B
Adressen\Anrufbeantworter Anrufbeantworter    153660804B
FaxEingang\Faxwerbung     Faxwerbung          996314393B
Support                   Support             323526972B

Damit filtern wir die Anzeige nach allen Ordnern, die mehr als 100 Megabyte Inhalte haben. Natürlich können Sie dies noch mit einer Sortierung versehen oder nach dem Pfad gruppieren. Spielen Sie einfach etwas mit der PowerShell und den Cmdlets herum.

Berechtigungen

Über die Befehle Get-PublicFolderClientPermission / Add-PublicFolderClientPermission / Remove-PublicFolderClientPermission können Sie auch die MAPI-Berechtigungen per Skript auf dem Server setzen, ohne mit Outlook arbeiten zu müssen. Hier am Beispiel zum addieren eines Benutzers:

Add-PublicFolderClientPermission
  -Identity "\order\unterordner"
  -User frank
  -AccessRights CreateItems
  -Server SRV01"

Wer natürlich viele Ordner zu verarzten hat, wird auch diesen Befehl über eine PIPE verketten:

Get-PublicFolder "ordnerpfad" -recurse | Add-PublicFolderClientPermission -User frank -AccessRights CreateItems -Server SRV01"

Replikation anstoßen

Mit den Exchange Cmdlets ist es aber auch möglich, die Inhalte eines Ordners gezielt noch einmal zu replizieren. Je neuer die Exchange Version ist, desto weniger Replikationsmails werden übertragen. Das kann bei einer Migration dann dazu führen,  dass eine Mail mal verloren geht und die Server sehr langen brauchen, bis Sie dies merken. mit den beiden Cmdlets kann man die Replikation von Ordnern und der Hierarchie erneut anstoßen.

Update-PublicFolder -Identity \Testordner -Server SRV01
Update-PublicFolderHierarchy -Server SRV01

Bei diesen Befehlen wird SRV01 als Quellserver für die Replikation genutzt. Natürlich können Sie über eine Verkettung mit "get-Publicfolder" auch mehrere Ordner mit "Update-PublicFolder" anstoßen.

Denken Sie dabei aber an das Mailvolumen. Sollte die Replikation wirklich einmal unterbrochen worden sein, dann müssen Sie zuerst die Ursache finden. In einem Mailsystem in dem Nachrichten "verloren" gehen, liegt meist ein Konfigurationsfehler vor, der erst gelöst werden muss

PS1-Skripte von Microsoft

Für viele Standardaufgaben liefert Microsoft schon einige vorgefertigte Skripte mit. Sie finden diese meist in

C:\Program Files\Microsoft\Exchange Server\Scripts

Hier ein Blick in das Verzeichnis eines Exchange 2007 Servers

PF-Managementskripte

Die Namen geben schon ausreichend Hinweise aus den Einsatzbereich der Skripte. So können Sie mit "AddreplicaToPFRecursive" eine neue PF-Datenbank als Replikat eines Servers addieren. Auch das Ersetzen von alten Benutzerrechten durch neue Berechtigungen ist gerade bei Migrationen sehr hilfreich.

öffentliche Ordner mit "angehängtem Leerzeichen"

Kaum zu sehen und oft ein Problem beim Zugriff per OWA oder WebDav: öffentliche Ordner, an deren Namen ein Leerzeichen am Ende steht. Dies sollten Sie korrigieren. Mit Exchange 2007 können Sie mit einem PowerShell-Aufruf diese Ordner auflisten:

Get-PublicFolder -recurse | where {$_.name.endswith(' ')} | export-csv -path folder.csv

Ein etwas längeres Skript habe ich auf "Find Exchange 2007 Public Folders with trailing spaces " http://visualbasicscript.com/m_61934/tm.htm) gefunden. was aber im wesentlichen das gleiche tut.

Weitere Links