Exchange Management Shell
Neben der grafischen Version der E2007:ESM gibt es natürlich auch die Management Shell, welche die Verwaltung von Exchange 2007 erlaubt. Auf dieser Seite beschreibe ich einige nützliche und häufig genutzte Befehle, die vielleicht nicht so eingängig sind. Wenn Sie mehrere Server installieren haben, dann werden Sie sich sehr schnell eine eigene Sammlung oder gar ein PS1-Skript anlegen, um ihren "Firmenstandard" durchzusetzen.
Eine reine Verwaltung der Exchange Online Properties geht mit der Exchange Management Rolle und Recipient Management PowerShell
Eine sehr gute Übersicht der Befehle und ihrer Anwendung können Sie auch offline einfach mitnehmen und lesen
Exchange 2007 Hilfe offline (Mai 2007) EN
http://www.microsoft.com/downloads/details.aspx?familyid=555F5974-9258-475A-B150-0399B133FEDE&displaylang=en
Globale Einstellungen
Starten Sie die PowerShell einfach nur über "Ausführen - PowerShell", dann werden Sie feststellen, dass die ganzen Exchange CMDLets nichts zur Verfügung stehen. Sie müssen die Exchange Management Shell über das Startmenü starten, so dass die zusätzlichen Komponenten eingebunden sind.
Dennoch werden Sie feststellen, dass besonders die Administration über mehrere Domänen hinweg manchmal nicht wie gewünscht funktioniert. Das liegt aber daran, dass die PowerShell per Default die lokale Domäne als "Suchfokus" hat. Das merken Sie z.B.: daran, dass ein "Get-DistributionGroupMember" per Default nur den Domain-Kontext der eigenen Domäne abfragen und so nicht alle Mitglieder der Gruppen liefert.
Dieses Verhalten lässt sich über den Befehl "$AdministratorenessionADSettings" anzeigen (Property "ViewEntireForest")
Um also die PowerShell dazu zu bringen, den kompletten Forest du verarbeiten muss man nur folgende Zeile ausführen:
"$AdministratorenessionADSettings.ViewEntireForest=$true"
Damit liefern nun auch "Get-DistributionGroupMember" und viele andere Befehle die komplette Information.
Alles rund um SMTP / POP3 / IMAP4
Wer SMTP und Internet Clients einrichtet, der wird erkennen, dass Exchange 2007 sehr viel pingeliger ist. Daher kann man z.B. den internen SMTP-Receiver etwas anpassen. Details siehe auch E2K7 POP3/IMAP4
set-receiveconnector servername -defaultdomain firma.de Get-transportserver | Set-Transport -externalPostmasterAddress admin@firma.de Get-ReceiveConnector "connectorname" | Add-ADPermission -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "ms-Exch-SMTP-Accept-Any-Recipient" set-pop3settings -login Plaintextlogin
Rechte auf Postfachspeicher und Postfächer
Folgende Befehle helfen bei der Vergabe von Rechten auf einzelne Postfächer oder Postfachspeicher, z.B. für Virenscanner, Archivlösungen, SingleMailboxExports, EXMERGE, Blackberry etc.
Add-ADPermission -Identity "Store" -User "User/group" -ExtendedRights Receive-As
Add-MailboxPermission -Identity "Postfac" -User Username -Accessright Fullaccess
-InheritanceType all
öffentlichen Ordner
Da in der Exchange 2007 Management Console vor Service Pack 1 keinerlei Unterstützung für die Verwaltung von öffentlichen Ordnern geboten wird, habe ich hierzu eine gesonderte Seite erstellt:
- E2K7: PFManagement - Management von öffentlichen Ordnern mit PowerShell
Messagetracking
Um die Pfade und Größe des Message Trackings zu steuern, müssen Sie die PowerShell bemühen.
Set-Transportserver -messagetrackinglogpath D:\LOGS -Messagetrackingsize 1000 MB Set-Transportserver -MessagetrackingLogMaxDirectorySize 1000 MB Set-Mailboxserver -messagetrackinglogpath D:\LOGS Set-Mailboxserver -MessagetrackingLogMaxDirectorySize 1000 MB
Routing und Hubs
Exchange 2007 nutzt die "Active Directory Standorte und Dienste" zur Ermittlung des Routings (Kosten und Wege). Die Kosten des AD-Sitelinks können mit Exchange Kosten überschrieben werden und Sites können zu "HUB-Sites" definiert werden. Dazu gibt es folgende Befehle:
[PS] C:\>Get-ADSite Name HubSiteEnabled ---- -------------- Paderborn False
Get-AdSiteLink Name ADCost ExchangeCost Sites ---- ------ ------------ ----- DEFAULTIPSITELINK 100 100 {Paderborn}
Eine Hubsite wird beim Routing nicht übergangen sondern als Relay genutzt. Die Kosten für einen Connector können abweichend definiert werden. Folgende Befehle sind dazu einzusetzen.
set-adsitelink -identity DEFAULTIPSITELINK -ExchangeCost 100 Set-ADSite -Identity Sitename -HubSiteEnabled $true
Der Einsatz von Hubsites ist z.B. interessant, um an zentralen Punkten einen Virenscan oder z.B. eine Archivierung einzuführen.
Statistiken
Während man im Exchange 2000/2003 System Manager auch über die Postfachressourcen schön sehen konnte, wie groß ein Postfach ist, geht das bei Exchange 2007 noch nicht über die Management Console. Auch hier gibt es die CMDLets natürlich in der Exchange Management Shell.
Ein einfaches "Get-MailboxStatistics" ist der Ansatzpunkt für umfangreiche Auswertungen:
[PS] C:\>Get-MailboxStatistics fcarius | fl AssociatedItemCount : 299 DeletedItemCount : 1946 DisconnectDate : DisplayName : Carius, Frank ItemCount : 49197 LastLoggedOnUserAccount : MSXFAQ\fcarius LastLogoffTime : LastLogonTime : 01.04.2007 20:31:10 LegacyDN : /O=NET AT WORK GMBH/OU=PADERBORN/CN=RECIPIENTS/CN=FCARIUS MailboxGuid : xxxxxxxxxxxxxxxxxxxxxxxxxxx ObjectClass : Mailbox StorageLimitStatus : BelowLimit TotalDeletedItemSize : 23271121B TotalItemSize : 1230766982B Database : NAWSV002\First Storage Group\Mailbox Database ServerName : NAWSV002 StorageGroupName : First Storage Group DatabaseName : Mailbox Database Identity : xxxxxxxxxxxxxxxxxxxxxx IsValid : True OriginatingServer : nawsv002
Natürlich kann die PowerShell auch eine Liste aller Mailboxen mit deren Postfachdaten ausgeben. Ein einfaches "Get-MailboxStatistics" liefert schon die komplette Liste.
[PS] C:\>Get-MailboxStatistics DisplayName ItemCount StorageLimitStatus LastLogonTime ----------- --------- ------------------ ------------- Microsoft System Attendan 0 BelowLimit 01.04.2007 20:48:58 t Carius, Frank 49197 BelowLimit 01.04.2007 20:31:10 testUser3 9 BelowLimit 12.01.2007 16:38:49
Interessant wir das natürlich, wenn man weitere Felder mit ausgibt oder auch nach dem StorageLimitStatus filters oder gruppiert. z.B.
[PS] C:\>Get-MailboxStatistics fcarius | ft displayname,*ItemCount,total* DisplayName AssociatedItemCount DeletedItemCount ItemCount TotalDeletedItemSize TotalItemSize ----------- ------------------- ---------------- --------- -------------------- ------------ Carius, Frank 299 1946 49197 23271121B 1230766982B
Wenn Sie bei "FT" noch die Option "-groupby" angeben, dann erhalten Sie die Liste entsprechend sortiert
[PS] C:\>Get-MailboxStatistics | ft displayname,*ItemCount,total* -GroupBy StorageLimitStatus
Diese Funktionen beschränken sich aber alle auf den Zugriff auf die Datenbank selbst. Erstmals erlaubt nun Exchange auch mit Bordmitteln einen Blick in die Postfächer.
[PS] C:\>Get-MailboxFolderStatistics fcarius | ft folderpath,name,itemsinfolder, foldersize FolderPath Name ItemsInFolder FolderSize ---------- ---- ------------- ---------- / Höchste Hierarch... 0 1227B /Antwort ausstehend Antwort ausstehend 3 243589B /Aufgaben Aufgaben 260 151378B /Entwürfe Entwürfe 11 90746B /Gelöschte Objekte Gelöschte Objekte 3 8577B /Gesendete Objekte Gesendete Objekte 10702 356490666B /Journal Journal 341 166231B /Junk-E-Mail Junk-E-Mail 0 5883B /Kalender Kalender 3045 13992384B /Kontakte Kontakte 2358 3913219B /Kontakte/Outloo... Outlook PCS 1 3978B
Natürlich können Sie nun "GetMailbox" mit einem Pipesymbol an "Get-MailboxFolderStatistics" verketten und damit mehrere Postfächer entsprechend auswerten.
Wenn Sie also z.B. wissen wollen, Wie viele Mails sich wo in den "Junk-E-Mail" befinden, dann könnte folgender Aufruf nützlich sein.
[PS] C:\>get-mailbox | Get-MailboxfolderStatistics | where {$_.Folderpath -match "/Junk-E-Mail"} | ft identity,foldersize -AutoSize Identity FolderSize
-------------------------------------------------------- ----------
netatwork.de/Abteilung/Technik/Carius, Frank\Junk-E-Mail 5883B
Exchange Lizenz per LDAP
Natürlich können Sie dann auch über die PowerShell die Exchange 2007 Lizenz eintragen.
set-exchangeserver ` -Identity 'CN=SRV1,CN=Servers,CN=Exchange Administrative Group (FYDIBOHF23SPDLT), CN=Administrative Groups,CN=MSXFAQ,CN=Microsoft Exchange,CN=Services,CN=Configuration, DC=MSXFAQ,DC=DE' -ProductKey 'XXXXX-YYYYY-ZZZZZ-WWWW-VVVVV'
Die Lizenz ist aber nicht besonders "versteckt", sondern wird einfach auf dem Serverobjekt im Feld "msExchProductID" in einem konvertierten Format abgespeichert (z.B.: nnnnn-nnn-nnnnnnnn-nnnnn).
Weitere Links
- Recipient Management PowerShell
- Exchange Management Rolle
- Exchange 2007 Diagnoseprotokoll
- E2K7 Tools
- PowerShell
- E2K7 PFManagement
- Exchange 2007 Hilfe offline (Mai 2007) EN http://www.microsoft.com/downloads/details.aspx?familyid=555F5974-9258-475A-B150-0399B133FEDE&displaylang=en
- Exchange 2007 and PowerShell
http://msexchangeteam.com//archive/2005/08/16/409299.aspx - Community-ubmitted scripts für managing Microsoft Exchange Server
2007
http://www.microsoft.com/technet/scriptcenter/csc/scripts/email/exch2007/index.mspx -
E2007 PowerShell: 375 unique commands
http://www.exchangeninjas.com/pscmdlets -
Writing Exchange 2007 scripts does more than just save Nick time!
http://blogs.technet.com/b/exchange/archive/2007/02/21/435561.aspx -
Community-submitted scripts für managing Microsoft Exchange Server 2007
http://www.microsoft.com/technet/scriptcenter/csc/scripts/email/exch2007/index.mspx -
Mailbox Load Balancing Made Simple
http://knicksmith.blogspot.com/2007/03/mailbox-provisioning-made-simple-part-1.html
http://knicksmith.blogspot.com/2007/03/mailbox-load-balancing-made-simple-part.html
http://knicksmith.blogspot.com/2007/03/mailbox-load-balancing-made-simple-part_05.html