 |  | Datebase Scope erstellen | New-ManagementScope -Name "GL_Scope" -DatabaseRestrictionFilter {Name -Like "GL-Datenbank*" }
New-ManagementRoleAssignment -Name "GL DB Admins_Databases" -SecurityGroup "GL_DBAdmins" -Role "Databases" -CustomConfigWriteScope "GL_Scope" | erst ab SP1 =>Univ. Sicherheitsgruppe "GL_DBAdmins" muss existieren | | No | Yes |
 |  | Empfängerrichtlinie für %1g.%s@domain setzten | Get-EmailAddressPolicy
Set-EmailAddressPolicy -Identity "Default Policy" -EnabledEmailAddressTemplates "SMTP:%1g.%s@<domain>.<tld>" | | | Yes | No |
 |  | Import von SMTP Aliase | Import-Csv C:\test.csv | Foreach-Object{ $user = Get-Mailbox -Identity $_.LoginName $user.EmailAddresses+=$_.SecondayAddress Set-Mailbox $user -EmailAddresses $user.EmailAddresses}
| test.csv (Beispiel): LoginName, SecondayAddress mthiem, mail1@domain.net mthiem, mail2@domain.net mthiem, mail2@domain.net
| | Yes | No |
 |  | Neue RoleGroup erstellen | New-RoleGroup -Name "GL_Admins" -Roles "Move Mailboxes" -ManagedBy "Manager" -Members "mecky", "mini" -RecipientScope "GL_Scope"
| | | No | Yes |
 |  | Neuer ManagementScope auf OU | New_ManagementScope -Name <Bezeichnung> -RecipientRestrictionFilter { RecipientTyp eq 'usermailbox' } -RecipientRoot "<domain>.local/<OU> | | | No | Yes |
 |  | Postfachgröße mit Anzahl von Elementen aller Datenbanken auflisten | Get-MailboxDatabase | Get-MailboxStatistics | where {$_.ObjectClass -eq "Mailbox"} | Sort-Object TotalItemSize -Descending | ft @{label="User";expression={$_.DisplayName}},@label="Total Size (MB)";expression={$_.TotalItemSize.Value.ToMB()}},@{label="Items";expression={$_.ItemCount}},@{label="Storage Limit";expression={$_.StorageLimitStatus}},Disconnect* -auto | | | No | Yes |
 |  | Postfachinhalt aus Recovery Datenbank wiederherstellen | Restore-Mailbox -Identity 'Mueller Max" -RecoveryDatabase RE1-DB -TargetFolder Recovery
“Get-MailboxStatistics –Database “RE1-DB” | Achtung! Berechtigungen für das Postfach ggf. zuweisen | | No | Yes |
 |  | Recovery Datenbank (RDB) erstellen | New-MailboxDatabase -Recovery -Name RE2-DB -Server mbx02 -EdbFilePath "F:\Programme\Microsoft\Exchange Server\V14\Mailbox\RE2-DB\RE2-DB.edb" -LogFolderPath "F:\Programme\Microsoft\Exchange Server\V14\Mailbox\RE2-DB”
| | | No | Yes |
 |  | Aktivieren von Diensten | Enable-ExchangeCertificate -Thumbprint 63F88582C07259D3EC9C134DEEFFDCFE40C3EFD0 -Services "IIS,SMTP,IMAP,POP" | | | Yes | No |
 |  | Exchange Zertifikate anzeigen | get-exchangecertificate |fl | | | Yes | Yes |
 |  | Export von Zertfikaten als PFX | Export-ExchangeCertificate -Thumbprint 782DCE09D3F789A8C36CA8F1C633D55815BAB013 -BinaryEncoded:$true -path d:\service\cert\20080824\mail.mueller-wuerzburg.de.pfx -Password:(Get-Credential).password | Achtung! Bei der Eingabe das Passwortes ist auch ein Benutzername notwendig. Dieser sollte dem Anmeldenamen entsprechen. | | Yes | No |
 |  | Zertifikat importieren | Import-ExchangeCertificate -Path c:\owa2007_der.cer | | | Yes | No |
 |  | Zertifikat löschen | Remove-ExchangeCertificate C61BBFA05839CAD7EBD111ABFFB33D0F6B388241 | | | Yes | No |
 |  | Zertifikatsanforderung für externen Zugriff | New-ExchangeCertificate -GenerateRequest -SubjectName "DC=Musterfirma, c=de, s=Bavaria, l=Nuernberg, o=Firma, ou=IT Administration, CN=mail.musterfirma.de" -DomainName mail.musterfirma.de, intern.musterfirma.de, autodiscover.musterfirma.de, server.musterfirma.local, autodiscover.musterfirma.local -FriendlyName "Microsoft Exchange 20xx" -privatekeyexportable $true -path c:\certreq.txt | Achtung! Auf korrekte Schreibweise, besonders beim internen FQDN, achten! | | Yes | No |
 |  | Zertifikatsverlängerung im SBS 2008 |
1.) Get-ExchangeCertificate <Thumbprint OLD> | New-ExchangeCertificate
2.) Enable-ExchangeCertificate -Thumbprint <Thumbprint NEW> -Services "IIS, SMTP,IMAP,POP"
| verlängert normalerweise um 1 Jahr Funktioniert auch nach Ablauf des "alten" Zertifikats | | Yes | No |
 |  | Aktivieren von ActiveSync für Mailboxen in Abhängigkeit von einer Verteilergruppe | # ControlActiveSync.ps1
$mailboxes = Get-CASMailbox $asusers = Get-DistributionGroupMember -Identity 'ActiveSyncFrei' $asguids = @() foreach ($user in $asusers) { $asguids += $user.GUID } foreach ($mailbox in $mailboxes) { if ($asguids -contains $mailbox.GUID ) { if ($mailbox.ActiveSyncEnabled -ne $true) { $mailbox | Set-CASMailbox -ActiveSyncEnabled $true echo "$mailbox is enabled" } } else { if ($mailbox.ActiveSyncEnabled -ne $false) { $mailbox | Set-CASMailbox -ActiveSyncEnabled $false echo "$mailbox is disabled" } } } | | | Yes | Yes |
 |  | Autodiscover URLs |
Muster für SBS 2008 Server (ger):
| <EXTERNALDNS> => Externe DNS Name des Servers <INTERNALDNS> => Interne DNS Name des Servers | | Yes | Yes |
 |  | Ermitteln von Mailboxen mit mobilen Endgeräten | Get-Mailbox | ForEach {Get-ActiveSyncDeviceStatistics -Mailbox:$_.Identity} | ft identity, Devicetype, DeviceUserAgent, LastSuccessSync > c:\output.txt | | | Yes | No |
 |  | Eventlog für OAL Erzeugung erhöhen | Set-EventLogLevel -Identity "MSExchangeSA\OAL Generator" -Level Medium | | | Yes | No |
 |  | IMAP Dienst aktivieren/deaktivieren | Set-service msExchangeIMAP4 -startuptype automatic Start-service msExchangeIMAP4
Set-CASMailbox {Benutzer} -ImapEnabled $true (aktivieren) Set-CASMailbox {Benutzer} -ImapEnabled $false (deaktivieren)
für alle Mailboxen:
Get-mailbox | set-casmailbox –imapenabled $false
| kann auch über Snap-In Dienste gemacht werden | | Yes | Yes |
 |  | Outlook Anywhere für bestimmte Benutzer sperren | Set-CASMailbox -Identity <UserName> -MAPIBlockOutlookRpcHttp $true
' Outlook Anywhere für alle Benutzer mit dem Wert für Office == 'dummy" deaktivieren
Get-Mailbox | Where {$_.Office -ne 'Dummy'} | Set-CASMailbox -MAPIBlockOutlookRpcHttp $true
| Die Kontrolle der Einstellungen kann dann mit "Get-CASMailbox -Identity <UserName> |fl" überprüft werden! Über dieses Cmdlet können auch andere Zugriffsarten blockiert werden. Im Standard sind alle Zugriffswege frei. | | Yes | No |
 |  | Outlook Webservices testen | Test-OutlookWebService |fl | | | Yes | No |
 |  | Outlook Webservices testen |
| | | Yes | Yes |
 |  | OWA Fehler trotz Zugriffsberechtigung | set-mailbox <Alias> -applymandatoryproperties
| Achtung! Zusätzlich muss noch die Vererbung der Berechtigungen am Benutzerobjekt über ADUC geprüft (on) werden (Anhang). |  | Yes | No |
 |  | OWA für bestimmte Benutzer sperren | Get-Mailbox | Where {$_.Office -ne 'Dummy'} | Set-CASMailbox -OWAEnabled:$false -ActiveSyncEnabled:$true | OWA für alle Benutzer mit dem Wert für Office == 'dummy" deaktivieren und ActiveSync aktivieren | | Yes | No |
 |  | POP/IMAP für alle Postfächer abschalten | get-Mailbox | Set-CASMailbox -popEnabled $false
get-Mailbox | Set-CASMailbox -imapEnabled $false | setzt aber nicht den Default für neue Postfächer! | | Yes | Yes |
 |  | Postfachliste mit den erlaubten Clientzugriffsarten anzeigen | get-mailbox | get-casmailbox
| | | Yes | No |
 |  | Regelspeicher verändern | Set-Mailbox -Identity <ALIAS> -RulesQuota:<Wert>
Set-Mailbox -Identity tdorn -RulesQuota:256KB
Abfrage:
Get-Mailbox -Identity <ALIAS> -|ft RulesQuota | | | Yes | Yes |
 |  | RPC Verschlüsselung für Outlook 2003 abschalten | Set-RpcClientAccess -Server <Exchange_server_name> -EncryptionRequired $False | Sollte bei Nutzung von PF auch an den MBX Servern ausgeführt werden | | No | Yes |
 |  | Unified Messaging URL |
nur External:
SBS2008:
| | | Yes | No |
 |  | URL für Clientaccess setzen |
Beispiel:
| | | Yes | No |
 |  | Virtuelle Verzeichnisse für Webservices konfigurieren |
| | | Yes | No |
 |  | Virtuelles Verzeichnis für UM erstellen | | | | Yes | No |
 |  | Anzahl von Ordner in einem Postfach ermitteln | Get-MailboxFolderStatistics -Identity <ALIAS> |ft name > c:\output.csv | Die Datei "output.csv" kann mit Excel geöffnet werden! | | No | Yes |
 |  | Automatisches Antworten von Ressourcenpostfach |
Einstellungen setzen
set-CalendarProcessing -Identity <Alias> -AutomateProcessing Autoaccept
set-CalendarProcessing -Identity Besprechungsraum -AutomateProcessing Autoaccept
Einstellungen prüfen:
get-CalendarProcessong -Identity <Alias> get-CalendarProcessong -Identity Besprechungsraum | gilt auch für Ressourcenposfächer, Raum- bzw. Ressourcenpostfach existiert schon | | No | Yes |
 |  | Datenbankstatistiken ermitteln | siehe Anhang | |  | Yes | Yes |
 |  | Deaktivierte Mailbox neuem Konto zuweisen | Get-MailboxStatistics -Database MA1-DB | Where { $_.DisconnectReason -eq "Disabled" } | ft DisplayName, Identity
Connect-Mailbox -Identity '3d0becd5-d395-4ac4-99f0-a7cf89431cc4' -Database 'MA1-DB' -User 'system\test1618' -Alias 'test1618' | | | No | Yes |
 |  | Deaktiviertes Postfach anzeigen | get-mailboxdatabase
Clean-MailboxDatabase -identity “Database Name”
ODER
get-mailboxdatabase | Clean-MailboxDatabase | "Database Name" im Format SERVER\DATABASE" => Postfach erscheint dann unter "Getrennte Postfächer" | | Yes | No |
 |  | Discovery Mailbox löschen | Disable-Mailbox -Identity "DiscoverySearchMailbox{D919BA05-46A6-415f-80AD-7E09334BB852}" | | | No | Yes |
 |  | E-Mail Adress Richtlinie mit Filter setzten | Set-EmailAddressPolicy -Name "Firma-Intern" -RecipientFilter {(RecipientType -eq 'UserMailbox') -and (Company -eq 'Mueller') -and (Office -ne 'Extern')} | | | Yes | No |
 |  | Journaling aktivieren | New-JournalRule –Name <Name der Regel> -JournalEmailAddress <E-Mail Adresse von Journalpostfach> -Scope External -Enabled $True
z.B.:
| Scope: - External => nachrichten von und zu externen Empfängern - Internal => Nachrichten von und zu internen Empfängern - Global => alle Nachrichten (intern und extern) | | Yes | No |
 |  | Kalenderberechtigungen für Postfach setzen | | Author = Schreibzugriff, kann eigene Elemente löschen Reviewer = Lesezugriff | | No | No |
 |  | Liste der Benutzer sortiert nach Postfachgröße | Get-MailboxStatistics | Sort-Object TotalItemSize –Descending | ft DisplayName,TotalItemSize,ItemCount
| | | Yes | No |
 |  | Löschen eines Postfachs (Schatten) | Get-MailboxStatistics -Server <SERVER> | where-object { $_.DisconnectDate -ne $null } | Select DisplayName,MailboxGuid, TotalItemSize, ItemCount, Database
ab Sp1:
Remove-StoreMailbox -Database <DATABASE> -Identity <2a4d636a-8a94-450d-bcb4-d76918ec59f8> -mailboxstate softdeleted | http://www.mikepfeiffer.net/2010/06/managing-disconnected-exchange-mailboxes-with-powershell/ | | No | Yes |
 |  | Löschen eines Postfachspeichers | Remove-MailboxDatabase -Identity <Datenbank ID>
Beispiel:
Remove-MailboxDatabase -Identity 'Mailbox Database 2124575172' | | | Yes | No |
 |  | Neue Speichergruppe erstellen | new-StorageGroup -Server 'EXC2007-MBX1' -Name 'SG3' -LogFolderPath 'K:\Programme\Microsoft\Exchange Server\Mailbox\SG3' -SystemFolderPath 'K:\Programme\Microsoft\Exchange Server\Mailbox\SG3'
| | | Yes | No |
 |  | Neuen Postfachstpeicher erstellen | new-mailboxdatabase -StorageGroup 'EXC2007-MBX1\SG3' -Name 'Mailbox Database 31' -EdbFilePath 'L:\Programme\Microsoft\Exchange Server\Mailbox\SG3\Mailbox Database 31.edb' | | | Yes | No |
 |  | Online Mailbox-Move von Postfächern | New-MoveRequest -id rk-consulting -SuspendWhenReadyToComplete -TargetDatabase MA2-DB
Resume-MoveRequest -id rk-consulting
| Zuerst wird die Mailbox zu 95% auf die neue Datenbank verschoeben und mit dem 2ten CMDlet wird der Request abgeschlossen und das Outlook wird kurz disconnected | | No | Yes |
 |  | Postfach für einen vorhandenen AD Benutzer erstellen | Enable-Mailbox -Identity 'system.loc/MyBusiness/Users/Name' -Alias 'Name' -Database 'SV01\First Storage Group\Mailbox Database' | | | Yes | Yes |
 |  | Postfach löschen (ohne Benutzerobjekt) | disable-mailbox -identity <Alias> | | | Yes | Yes |
 |  | Postfächer mit "Vollzugriff" eines Benutzers finden | Get-Mailbox | Get-MailboxPermission | Where {$_.User -like "SYSTEM\tdorn" -and $_.AccessRights -like "FullAccess" -and $_.IsInherited -eq $false} | ft identity,User,AccessRights,IsInherited -AutoSize | schließt die "vererbten" Einträge aus | | Yes | Yes |
 |  | Postfachliste, nach Größe sortiert | Get-MailboxStatistics | Sort-Object TotalItemSize –Descending | ft DisplayName,TotalItemSize,ItemCount | | | Yes | Yes |
 |  | Raumpostfach antwortet automatisch | Set-MailboxCalendarSettings -Identity <alias> -AutomateProcessing autoaccept -DeleteAttachments $true | | | Yes | No |
 |  | Regionaleinstellung für Postfächer | set-mailbox -Identity <Alias> -Languages "tr-TR"
| "tr-TR" = Türkei "fi-FI" = Finnland | | Yes | No |
 |  | Reseeding einer Datenbankkopie | Update-MailboxDatabaseCopy -Identity DB1\MBX1 -SourceServer MBX2 | http://technet.microsoft.com/de-de/library/dd335201.aspx Ziel DB und Ziel Logs vorher leeren
| | No | Yes |
 |  | RPC Verschlüsselung abschalten (OL2003) | Set-RpcClientAccess -Server Exchange_server_name -EncryptionRequired $False | | | No | Yes |
 |  | Sonderpostfächer einer Postfachdatenbank anzeigen |
get-Mailbox -database <Postfach Datenbank> -Arbitration |ft -wrap -auto
Beispiel:
get-Mailbox -database 'Mailbox Database 2124575172' -Arbitration |ft -wrap -auto | Um eine Postfach Datenbank zu löschen, in welcher Systempostfächer und Arbitrationspostfächer vorhanden sind, müssen diese erst verschoben werden (siehe anderen Eintrag) | | Yes | No |
 |  | Statistik eines Postfachs mit formatierter Ausgabe | Get-MailboxStatistics | Select-Object displayname,totalitemsize,totaldeleteditemsize,databasename |fl | ausgegeben wird: - Anzeigenname - Größe aller Objekte - Größer aller gelöschten Objekte - Name der Datenbank | | Yes | No |
 |  | SystemMailbox löschen | get-mailbox -Database <name> -Arbitration | Disable-Mailbox -Arbitration -DisableLastArbitrationMailboxAllowed | | | No | Yes |
 |  | Systempostfächer verschieben | get-Mailboxdatabase
get-Mailbox -database <alias> -Arbitration |ft Name
New-MoveRequest 'SystemMailbox <alias> -TargetDatabase <ZielDB> | für Federated E-Mail und für Systemmailbox | | No | Yes |
 |  | Umlaufprotokollierung ausschalten/einschalten | Set-MailboxDatabase <Datenbank> -CircularLoggingEnabled $true
Set-MailboxDatabase mb-db1 -CircularLoggingEnabled $false | Prüfung: Get-MailboxDatabase |select database,circularloggingenabled | | Yes | Yes |
 |  | Umwandlung Postfachtyp | Set-Mailbox -identity <Alias> -Type <TYP>
Set-Mailbox -identity Besprechungsraum -Type Regular
Typ feststellen:
Get-Mailbox -identity <Alias> |fl | Für den Parameter TYP können die folgenden Werte verwendet werden: - Regular - Room - Equipment - Shared
| | Yes | No |
 |  | Verschieben von Postfächer unter Exchange 2010 | New-MoveRequest <Postfach ID> -TargetDatabase <Datenbank ID>
Beispiel:
New-MoveRequest 'FederatedEmail.4c1f4d8b-8179-4148-93bf-00a95fa1e042' -TargetDatabase 'DB Postfachspeicher 1' | | | No | Yes |
 |  | Vollzugriff für ein Postfach | Add-MailboxPermission "Mailbox" -User "Trusted User" -AccessRights:FullAccess
Add-MailboxPermission SMueller -User Administrator -AccessRights:FullAccess
Für alle Postfächer auf allen Mailboxservern:
Get-mailboxserver "sv01" | Add-ADPermission -user 'exchange_admin' -AccessRights ExtendedRight -ExtendedRights Send-As, Receive-As | Der Zugriff auf das Postfach erfolgt z.B über MS Outlook, wobei die MAPI Konfiguration auf "Mailbox" erfolgt, die Anmeldung jedoch mit "Trustet User" durchgeführt wird | | Yes | Yes |
 |  | Alle Öffentlichen Ordner entfernen | Get-PublicFolder -Server <SERVER> "\" -Recurse -ResultSize:Unlimited | Remove-PublicFolder -Server <SERVER> -Recurse
Get-PublicFolder -Server GAMMA2 "\" -Recurse -ResultSize:Unlimited | Remove-PublicFolder -Server GAMMA2 -Recurse | | | Yes | Yes |
 |  | Alle Öffentlichen Ordner verschieben | .\MoveAllReplicas.ps1 -server <Quelle> -newserver <Ziel> | | | Yes | Yes |
 |  | Berechtigungen für Öffentlichen Ordner eintragen | Add-PublicFolderClientPermission -Identity "\Marketing\West Coast" -AccessRights Owner -User Max -Server <FQDN>
| |  | Yes | No |
 |  | Berechtigungen für Öffentlichen Ordner rekursiv eintragen | .\AddUsersToPFRecursive.ps1 -TopPublicFolder "\Sales" -User "David" -Permission Owner | 1.) TopPublicFolder kann auch "\" sein 2.) bei Leerzeichein in "TopPublicFolder" sollte der Wert mit "' eingefasst werden (also .. -TopPublicFolder "'\Test Ordner'"..) D:\Programme\Microsoft\Exchange Server\Scripts | | Yes | No |
 |  | Berechtigungen für Öffentlichen Ordner selektiv eintragen | Get-PublicFolder '\' -recurse -resultsize unlimited| where { $_.Name -eq "Sales" } | Add-PublicFolderClientPermission -AccessRights Reviewer -User "Max" | | | Yes | No |
 |  | Liste der Öffentlichen Ordner | Get-PublicFolderStatistics -server <SERVER> -mbx1 |fl | | | Yes | No |
 |  | Liste mit PF Replikate | Get-PublicFolder -Recurse |fl Replicas,Identity > c:\output.txt | | | Yes | Yes |
 |  | Neue Öffentliche Ordner Datenbank | new-publicfolderdatabase -StorageGroup '<SERVER>\PF01' -Name 'PUB01' -EdbFilePath 'F:\SG01\PUB01.edb' | | | Yes | No |
 |  | Neuer Öffentlicher Ordner | New-Public-Folder -Name 'Ordner 01' -Path '\' -Server 'server01.domain.local' | geht aber auch über EMC => Tools | | Yes | Yes |
 |  | Öffentliche Ordner aktualisieren | Get-publicfolder \ -recurse | update-publicfolder Update-publicfolderhierarchie
| | | Yes | Yes |
 |  | Replikas von Öffentlichen Ordnern auflisten | Get-publicfolder -recurse |fl name,replicas | | | Yes | No |
 |  | Replikate der Öffentlichen Ordner rekursiv eintragen | .\addreplicatoPFRecursive.ps1 -TopPublicFolder \ -ServerToAdd EXC2007-MBX1
| Achtung! Enthält nicht die Systemordner D:\Programme\Microsoft\Exchange Server\Scripts | | Yes | No |
 |  | Replikate von Öffentlichen Ordner entfernen | RemoveReplicaFromPFRecursive.ps1 –Server EXCH01 –TopPublicFolder \ –ServerToRemove EXCH02
für Systemordner:
.\RemoveReplicaFromPFRecursive.ps1 -TopPublicFolder "\NON_IPM_SUBTREE" -server <NAME> -servertoremove <NAME> | | | Yes | Yes |
 |  | Replikationsintervall für Öffentliche Ordner recursiv eintragen | Get-PublicFolder -Recurse | Set-PublicFolder -UseDatabaseR eplicationSchedule: $true | | | Yes | Yes |