Exchange2007/2013-Scripte

eine Resourcenmailbox erstellen...
eine Abwesenheitsnachricht erstellen...
grafische Powershell für Exchange konfigurieren...
AD-Attribut legacyExchangeDN nachträglich ändern...
AD-Attribut mailNickName nachträglich ändern...
Exchange2007-Zertifikat nachträglich ändern...

zeige mir alle Mails der letzten 24 Stunden an, die wegen einem Fehler nicht zugestellt werden konnten:

Get-Messagetrackinglog -Resultsize unlimited -EventID “FAIL” | where-object {$_.Timestamp -ge ((get-date).AddDays(-1)) } |fl Timestamp,Sender,Recipients,Recipientstatus

Mailboxgröße anzeigen lassen:

Get-MailboxStatistics |where {$_.TotalItemSize -gt 200000000} | sort-object TotalItemSize -descending |FT DisplayName,ItemCount,TotalItemSize 

AD-Rechte anzeigen (als identity geht auch der NT-Anmeldename):

Get-adpermission -identity "Tom Waits"

PostfachQuota „Senden verbieten“ auslesen:

get-mailbox -resultsize unlimited

PostfachQuota „Senden verbieten“ setzen:

Get-Mailbox *Tom* | Set-Mailbox -ProhibitSendQuota 100MB

Alle Benutzer mit send-as rechten anzeigen:

Get-Mailbox | Get-ADPermission | where {($_.ExtendedRights -like “*Send-As*”) -and ($_.IsInherited -eq $false) -and -not ($_.User -like “NT AUTHORITY\SELF”)} | FT -Wrap

einem Benutzer (Bsp. mailadm) volle Rechte an allen Postfächern einrichten:

Get-Mailbox | Add-Mailboxpermission -user "mailadm" -accessRights 'FullAccess' -InheritanceType All

Zugriff über OWA testen:

test-owaconnectivity -url:https://myexchsrv/owa -mailboxcredential:(get-credential mydom\username)

Postfach verschieben:

Move-Mailbox -Identity ntusername -TargetDatabase 'myexchsrv\SG3\SG3_DB' -confirm:$false

nach einer gesendeten Mail suchen; es wird nur was gefunden, wenn vom exchangeserver aus gesendet wurde.

get-messagetrackinglog -Sender "absender@mydom.ain" -EventID "SEND" -Start "08.12.2010 09:41:00" -End "09.12.2010 10:51:00"

wenn über die Relayingfunktion des exchangeservers von einem Linuxserver per SMTP gesendet wurde, muss das Logfile manuell durchsucht werden.

e:\Exchange2007\TransportRoles\Logs\MessageTracking\MSGTRK20101209-1.LOG

Offlineadressbuch aus globalen Katalog manuell sofort aktualisieren:

Update-GlobalAddressList -identity "Globale Standardadressliste"
Update-FileDistributionService -Identity myexchsrv -type "OAB"


Alle „Abkehrer“ nicht mehr im Adressbuch anzeigen lassen(Exchange2003/Exchange2007-Problem)

Get-MailBox -OrganizationalUnit "Abkehrer" | Set-Mailbox -HiddenFromAddressListsEnabled $true

dann

Update-GlobalAddressList -identity "Globale Standardadressliste"


Zeige alle seit gestern per GAL-Replikation neu erstellten oder geänderten Kontakte an:

get-contact -ResultSize Unlimited | where-object {$_.whenchanged -ge ((get-date).AddDays(-1)) }| fl whenchanged,name,windowsemailaddress


Maile alle seit gestern per GAL-Replikation neu erstellten oder geänderten Kontakte an admin@dom.ain:
(bitte alles in eine Zeile ohne die Backslashes)

send-mailmessage -to admin@dom.ain -from spinne@dom.ain -subject "neue Kontakte" -smtpserver meinSMTPsrv -Body \
(get-contact -ResultSize Unlimited | \
where-object {$_.whenchanged -ge ((get-date).AddDays(-1)) -and $_.whenchanged -le ((get-date))}| \
fl whenchanged,name,windowsemailaddress | Out-String) 


gebe dem Benutzer service_pf das recht auf Impersonation an allen Postfächern:

Get-MailboxDatabase | ForEach-Object {Add-ADPermission -Identity $_.DistinguishedName -User service_pf -ExtendedRights ms-Exch-EPI-Impersonation}
Get-MailboxDatabase | ForEach-Object {Add-ADPermission -Identity $_.DistinguishedName -User service_pf -ExtendedRights ms-Exch-EPI-May-Impersonate}

Prüfe die erfolgreiche Übernahme der gerade vergebenen Rechte:

Get-Mailboxdatabase | get-adpermission -user service_pf


Geplanten Task erstellen:
Beispielpfad für Exchangeordner: E:Exchange2007

Action:Start a program
Program/script: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Add Arguments-PsConsoleFile E:\Exchange2007\Bin\exshell.psc1 -command „E:\Exchange2007\Scripts\sendNonDeliveryReport.ps1“

Achtung: Leerzeichen im Pfad werden trotz Anführungszeichen mit Fehler quitiert.

Public Folders

Alle öffentlichen Ordner anzeigen:

Get-PublicFolder -recurse

Rechte eines öffentlichen Ordners anzeigen:

Get-Publicfolderclientpermission -identity "\Abteilung1" | fl

Rechte auf öffentlichen Ordner übernehmen:

Add-PublicFolderClientPermission -user myntuser -identity "\Abteilung1" -AccessRights Owner
Add-PublicFolderClientPermission -user myntuser -identity "\Abteilung1" -AccessRights PublishingEditor
Add-PublicFolderClientPermission -user myntuser -identity "\Abteilung1" -AccessRights Editor
Add-PublicFolderClientPermission -user myntuser -identity "\Abteilung1\Kalenderdazu" -AccessRights Author
Add-Publicfolderclientpermission -user myntuser -identity "\Abteilung1\Eingang" -AccessRights Editor

leider habe ich es bis her noch nicht geschafft, mehrere Benutzer gleichzeitig zu berechtigen ala:

Add-Publicfolderclientpermission -user myntuser1,myntuser2 ...

Einfacher ist es manchmal, sich die Eigentumsrechte am Ordner zu verschaffen und per Outlook weitere Rechte zu konfigurieren.

Exchange 2013
Datenbank mounten:

get-mailboxdatabase | mount-database

Migration aller Mailboxen von Exchange 2007 nach Exchange 2013:
auf dem Exchange 2013 server ausführen:

get-mailbox -Database Ex2007MB1 | new-moverequest -TargetDatabase Ex2013MB1 -BatchName "mig07to13"

alten Exchangeserver 2010 löschen:
dazu alle Publicfolder vorher verschieben oder löschen:

get-publicfolderstatistics -server Ex2010 | remove-publicfolder