Die "Exchange Powershell", oder im Fachjargon auch "Exchange Management Shell" genannt, ist aus dem Leben eines Exchange Administrator nicht mehr wirklich wegzudenken. Einige Einstellungen können in Exchange 2007 nicht mehr wie bei Exchange 2000/2003 über die Management Konsole gemacht werden, sondern ausschließlich mit der Powershell getätigt werden.
UNIX-Administratoren, die sich vielleicht auch mit der aktuellen Exchange Version beschäftigen müssen werden schmunzeln, dass auch Microsoft nun den Weg weg vom "Klicki Klacki" geht und die Welt der Text-Befehls-Administration öffnet. Die simple Definition von Befehlsparametern und die Möglichkeit der Kombination von Powershell-Befehlen mittels dem Pipe-Befehl (|) macht die Shell allerdings einzigartig und es entsteht fast eine Art Suchtgefahr, wenn man erst mal Blut geleckt hat
In diesem Artikel möchte ich nach und nach die für einen Exchange Admin wichtigsten grundlegenden Powershell-Befehle sammeln. Wer selbst einen Exchange Powershell-Befehl entdeckt hat der anderen weiterhelfen könnte und den ich hier noch nicht aufgeführt habe, der darf mir diesen Befehl gerne schicken oder ihn direkt als Kommentar unter diesen Artikel posten ==> KLICK: zu den Kommentaren
Logbuch
| Datum: | Befehl: | Funktion: |
| 01.03.2008 | [PS] get-Mailbox [PS] get-MailboxStatistics [PS] get-MailboxFolderStatistics [PS] get-Mailbox mit "ft" [PS] get-MailboxStatistics mit "where Abfrage" [PS] get-LogonStatistics mit "ft" |
alle Postfächer einer Datenbank anzeigen Postfachgrößen (Gesamtgröße) Postfachgröße und Details von Ordnern Postfachgrenzen anzeigen Postfächer mit überschrittenen Postfachgrenzen anzeigen Zugriffsart der Postfächer einer Datenbank anzeigen |
| 22.05.2008 | [PS] move-Mailbox [PS] set-Mailbox -languages [PS] set-CASMailbox … -PopEnabled … -IMAPEnabled [PS] new-StorageGroup [PS] new-MailboxDatabase [PS] export-Mailbox [PS] import-Mailbox |
Postfach ohne Nachfrage verschieben Sprache aller Postfächer auf einem Server auf DEUTSCH setzen Postfach für POP3/IMAP4 aktivieren Neue StorageGroup erstellen Neue Postfach-Datenbank erstellen Postfach in PST-Datei exportieren PST-Datei in Postfach importieren |
| 12.08.2008 | [PS] get-MailboxDatabase … | Add-ADPermission … [PS] get-Mailbox … | whereObject … | set-Mailbox … |
"SendAs"-Recht für einen Benutzer auf eine Datenbank vergeben "Legacy Mailbox" in "User Mailbox" konvertieren (RUS Ersatz) |
| 21.01.2009 | [PS] get-MessageTrackingLog [PS] get-ActiveSyncDeviceStatistics |
Nachrichten-Tracking Die Statistik eines ActiveSync Gerätes anzeigen |
Alle Postfächer einer Datenbank
[PS] C:> get-Mailbox -database MDB-01
Name Alias ServerName ProhibitSendQuota
==== ===== ========== =================
Duck, Dagobert DDUCK1 MAILSERVER unlimited
Duck, Daisy DDUCK2 MAILSERVER unlimited
Gans, Gustav GGANS MAILSERVER unlimited
Düsentrieb, Daniel DDUESE MAILSERVER unlimited
Alle vorhandenen Postfächer
[PS] C:> get-Mailbox -ResultSize unlimited | ft alias,guid,servername -AutoSize
Alias Guid ServerName
===== ==== ==========
dduck 5c260ef8-eaa7-4b33-ae1a-1e65d286ac0e MAILSERVER
dduese 01a4c6c5-a48d-4635-8853-fc5ba2e924d1 MAILSERVER
ggans 7dbc94f8-ee2c-46ad-b323-b0b222acb764 MAILSERVER
Postfachgrößen (Gesamtgröße)
[PS] C:> get-MailboxStatistics | ft DisplayName,ItemCount,TotalItemSize -AutoSize
DisplayName ItemCount TotalItemSize
=========== ========= =============
Duck, Dagobert 42908 453272415B
Düsentrieb, Daniel 50539 1411833851B
Postfachgrößen aller Postfächer auf einem bestimmten Server sortiert
[PS] C:> get-MailboxStatistics -Server SERVERNAME | Sort-Object -Property TotalItemSize | ft DisplayName, TotalItemSize
DisplayName TotalItemSize
=========== =============
Duck, Dagobert 453272415B
Düsentrieb, Daniel 463172519B
Postfachgröße und Details von Ordnern
[PS] C:> get-MailboxFolderStatistics -identity “dduese” | ft folderpath,foldersize,itemsinfolder,FolderAndSubfoldersize -AutoSize
FolderPath FolderSize ItemsInFolder FolderAndSubfolderSize
========== ========== ============= ======================
/ 0B 0 488773B <== gesamte Postfachgröße
/Calendar 156492B 378 156492B
/Contacts 0B 0 0B
/Deleted Items 7800B 6 7800B
/Drafts 0B 0 0B
/Inbox 57337B 24 57337B
/Journal 0B 0 0B
/Junk-E-Mail 0B 0 0B
/Notes 0B 0 0B
/Outbox 0B 0 0B
/quarantine 0B 0 0B
/RSS 0B 0 167697B
/RSS/RSS Popper Errors 167697B 103 167697B
/Sent Items 44698B 28 44698B
/Spam Mail 54749B 0 99112B
/Spam Mail/Approved Sender List 44363B 1 44363B
/Tasks 0B 0 0B
Postfachgrenzen ausgeben
[PS] C:> get-Mailbox -identity "dduese" | ft name,IssueWarningQuota,ProhibitSendQuota,ProhibitSendReceiveQuota -AutoSize
Name IssueWarningQuota ProhibitSendQuota ProhibitSendReceiveQuota
==== ================= ================= ========================
Düsentrieb, Daniel unlimited unlimited unlimited
Postfächer mit überschrittenen Postfachgrenzen ausgeben
[PS] C:> get-MailboxStatistics | where {$_.StoragelimitStatus -ne "BelowLimit"} | ft display*,*limit* | out-file report.txt
DisplayName StorageLimitStatus
=========== ==================
Duck, Dagobert NoChecking
Duck, Daisy IssueWarning
Düsentrieb, Daniel NoChecking
Gans, Gustav ProhibitSend
Zugriffsart der Postfächer einer Datenbank ausgeben
[PS] C:> get-LogonStatistics -database MDB-01 | ft UserName,ClientName,HostAddress
UserName ClientName HostAddress
======== ========== ===========
Duck, Dagobert PC-DDUCK1 IIS-HTTPDAV
Duck, Daisy PC-DDUCK2
Düsentrieb, Daniel PC-DDUESE
Gans, Gustav PC-GGANS IIS-HTTPDAV
Postfach ohne Nachfrage verschieben
[PS] C:> move-mailbox -Identity "22102263" -TargetDatabase MAILSERVER\SG-01\MDB-01 -confirm:$false
501005006
Moving messages. Posteingang [37/67]
[oooooooooooooooooooooooooooooooooooooooo ]
Sprache aller Postfächer auf einem Server auf DEUTSCH setzen
[PS] C:> get-mailbox -Server SERVERNAME | Set-Mailbox -languages: de-DE
Postfach für POP3/IMAP4 aktivieren
[PS] C:> set-CASMailbox -Identity DDUESE -PopEnabled $true -IMAPEnabled $true
Neue StorageGroup erstellen
[PS] C:> new-StorageGroup -Server ‘SERVERNAME’ -Name ‘SG-01′ -LogFolderPath ‘C:\SG-01′ -SystemFolderPath ‘C:\SG-01′
Neue Postfach-Datenbank erstellen
[PS] C:> new-MailboxDatabase -StorageGroup ‘SERVERNAME\SG-01′ -Name ‘MDB-01′ -EdbFilePath ‘F:\SG-01\MDB-01.edb’
Postfach in PST-Datei exportieren
[PS] C:> export-Mailbox -Identity DDUESE -PSTFolderPath D:\temp
PST-Datei in Postfach importieren
[PS] C:> import-Mailbox -Identity DDUESE -PSTFolderPath D:\temp\dduese.pst
"SendAs"-Recht für einen Benutzer auf eine Datenbank vergeben
[PS] C:> get-MailboxDatabase -id SERVERNAME\SG-01\MDB-01 | Add-ADPermission -User "dduese" -ExtendedRights Send-As
[PS] C:> get-MailboxDatabase -ser SERVERNAME | Add-ADPermission -User "dduese" -ExtendedRights Send-As
"Legacy Mailbox" in "User Mailbox" konvertieren (RUS Ersatz)
[PS] C:> get-Mailbox -DomainController SERVERNAME -ResultSize unlimited | where-Object {$_.RecipientTypeDetails -ilike "Legacy*"} | set-Mailbox –ApplyMandatoryProperties -verbose
Nachrichten-Tracking
[PS] C:> get-messagetrackinglog -Sender "daniel.duesentrieb@entenhausen.de" -Start "04.08.2008 12:00:00" -End "04.08.2008 15:00:00" | ft Timestamp,Source,TotalBytes,MessageSubject,Sender,Recipients –AutoSize | out-file c:\tracking.txt
[PS] C:> get-messagetrackinglog -Sender "daniel.duesentrieb@entenhausen.de" -Start "04.08.2008 12:00:00" -End "04.08.2008 15:00:00"
Die Statistik eines ActiveSync Gerätes anzeigen
[PS] C:> Get-ActiveSyncDeviceStatistics -mailbox donald.duck@entenhausen.de
FirstSyncTime : 11.11.2008 10:06:37
LastPolicyUpdateTime : 11.11.2008 10:06:56
LastSyncAttemptTime : 21.01.2009 09:58:45
LastSuccessSync : 21.01.2009 09:58:45
DeviceType : PocketPC
DeviceID : B107EF0A96ECEE4243CE62C7EAC76C75
DeviceUserAgent :
DeviceWipeSentTime :
DeviceWipeRequestTime :
DeviceWipeAckTime :
LastPingHeartbeat :
RecoveryPassword : ********
DeviceModel : MDA_compact_IV
DeviceIMEI : 3531900321194501
DeviceFriendlyName : HTC6
DeviceOS : Windows CE 5.2.19591
DeviceOSLanguage : German
DevicePhoneNumber : +498154711
Identity : Donald.Duck@Entenhausen.de\AirSync-PocketPC-B107EF0A96ECEE4243CE62C7EAC76C75
Postfach aus einer Recovery Storage Group in ein aktives Postfach (Unterordner) exportieren
[PS] C:> Restore-Mailbox -RSGMailbox ‘MAILBOXNAME1′ -RSGDatabase ‘MAILSERVERNAME\Recovery Storage Group\DATENBANKNAME’ -id ‘MAILBOXNAME2′ -TargetFolder ‘Restore’
CMS auf einem Exchange Cluster von Node A auf Node B schwenken
[PS] C:> stop-ClusteredMailboxServer -Identity MAILSERVERNAME -StopReason MM
[PS] C:> Move-ClusteredMailboxServer -Identity MAILSERVERNAME -TargetMachine MAIL06SZDN1 -MoveComment MM
[PS] C:> start-ClusteredMailboxServer -Identity MAILSERVERNAME
Alle Postfächer eines bestimmten Exchange Servers auflisten, dessen Postfachordner ”Synchronisierungsprobleme\Serverfehler” mehr als NULL Elemente beinhalten ; die Anzahl Items und die Größe des Ordners ausgeben
[PS] C:> get-mailbox -Server MAILSERVERNAME -ResultSize unlimited | Get-MailboxfolderStatistics | where {$_.Folderpath -match "/Synchronisierungsprobleme/Serverfehler" -AND $_.ItemsInFolder -gt "0"} | ft identity,ItemsInFolder,foldersize -AutoSize
… Liste wird noch weiter vervollständigt …
Links zum Thema
Introduction in Exchange 2007 Management Shell
http://www.microsoft.com/downloads/details.aspx?FamilyID=1dc0f61b-d30f-44a2-882e-12ddd4ee09d2&DisplayLang=en
Exchange Management Shell Quick Reference
http://www.microsoft.com/downloads/details.aspx?familyid=01A441B9-4099-4C0F-B8E0-0831D4A2CA86&mg_id=10048&displaylang=en
Deutschsprachige Einführung
http://www.microsoft.com/technet/technetmag/issues/2006/12/HeyScriptingGuy/default.aspx?loc=de/
Powershell Blog
http://blogs.msdn.com/powershell/
PowerShell Plus – The Power Tool for PowerShell
http://www.powershellplus.com/
PowerGUI – Grafisches Interface und Skript-Editor für die Windows PowerShell
http://www.powergui.org/index.jspa
Keywords: Exchange 2007 Powershell Befehle Exchange Management Shell