Hier möchte ich von mir häufig benutzte Exchange PowerShell Befehle notieren.
Weiterleitungen ermitteln
Get-Mailbox -ResultSize unlimited | Where-Object {$_.ForwardingSMTPAddress -ne $null} | Select-Object Name,ForwardingSMTPAddress
Verteilergruppen ermitteln und abspeichern
write-output “” > C:\temp\outputDGmembers.txt get-distributiongroup | Sort -Property DisplayName | foreach { $name = $_.displayname $mailadresse = $_.PrimarySmtpAddress $output = ‘Group Name: ‘ + $Name + ' ' + $mailadresse write-output $output >> C:\temp\outputDGmembers.txt Get-DistributionGroupMember $name | Sort -Property DisplayName | Select DisplayName, Alias, Department >> C:\temp\outputDGmembers.txt write-output “” “” >> C:\temp\outputDGmembers.txt }
Senden-Als Berechtigungen ermitteln (kann länger dauern)
Get-Mailbox | Get-ADPermission | where {($_.ExtendedRights -like '*Send*') -and -not ($_.User -like "NT-AUTORITÄT\SELBST")} | Format-Table -Auto Identity,User,Deny,ExtendedRights
Senden im Auftrag ermitteln (kann länger dauern)
Get-Mailbox | Where-Object {$_.GrantSendOnBehalfTo -ne $null} | fl DisplayName,Alias,Identity,GrantSendOnBehalfTo
Vollzugriff auf Postfach ermitteln (alle)
$nbdomain = "NetBIOS-DOMAIN" Get-Mailbox | Get-mailboxPermission | Where-Object { ($_.accessRights -like "*fullaccess*") -and -not ($_.User -like "nt-autorität\selbst") -and -not ($_.User -like "$nbdomain\Domänen-Admins")-and -not ($_.User -like "$nbdomain\Organisations-Admins") -and -not ($_.User -like "$nbdomain\Organization Management") -and -not ($_.User -like "$nbdomain\Administrator") -and -not ($_.User -like "$nbdomain\Exchange Servers") -and -not ($_.User -like "$nbdomain\Exchange Trusted Subsystem") -and -not ($_.User -like "nt-autorität\system")} | ft -AutoSize
Berechtigung eines einzelnen Postfachs auslesen
$user = "k.mustermann" get-mailbox -identity $user| Get-MailboxPermission | ?{($_.IsInherited -eq $False) -and -not ($_.User -match "SELBST")} | ft $user,User,AccessRights -AutoSize
Mailbox Exportieren vorbereiten. Dieser Nutzer hat nach dem Neustart der Powershell das Recht Postfächer zu ex- bzw. importieren.
New-ManagementRoleAssignment -Role "Mailbox Import Export" -User <BENUTZERAME>
Postfach exportieren
New-MailboxExportRequest -Mailbox <username> -FilePath \\servername\verzeichnis\username.pst -BadItemLimit 100
Postfach importieren
New-MailboxImportRequest -Mailbox <username> -FilePath \\servername\verzeichnis\username.pst -BadItemLimit 100
Mailbox Export überwachen
Get-MailboxExportRequest Get-MailboxExportRequest |Sort-Object -Property Status | ft FilePath, Status
Bulk Export von Postfächern
$allmailboxes = Get-Mailbox $allmailboxes |% {$_| New-MailboxExportRequest -FilePath "\\localhost\c$$($_.Alias).pst" -BadItemLimit 100}
Mailqueue (ausführlich) ausgeben. (Info-Link)
Get-Queue | Format-List
Mailqueue erneut abarbeiten (Info-Link)
Retry-Queue
Maillog durchsuchen. Datum ist amerikanisch! (Info-Link)
Get-MessageTrackingLog -ResultSize Unlimited -Start "5/20/2021 8:00AM" -End "5/20/2021 11:00PM"
Get-MessageTrackingLog -ResultSize Unlimited -Start "5/20/2021 8:00AM" -End "5/20/2021 11:00PM" | Format-List
Nachrichtentracking, wurde Mail an den Connector übermittelt?
Get-MessageTrackingLog -EventId Send -ResultSize Unlimited -Sender [sender@mail] -Recipients [empfänger@mail] | Format-List Time*,MessageSubject,SourceCo*,Send*,Recipient*
Postfachgröße für Benutzer XY ermitteln
Get-MailboxStatistics [XY] | Format-List DisplayName,StorageLimitStatus,TotalItemSize,TotalDeletedItemSize,ItemCount,DeletedItemCount
Postfachgröße für alle Benutzer ermitteln
Get-Mailbox | Get-MailboxStatistics | Format-List DisplayName,StorageLimitStatus,TotalItemSize,TotalDeletedItemSize,ItemCount,DeletedItemCount Get-MailboxDatabase | Get-MailboxStatistics | Select-Object displayname,totalitemsize |Sort-Object totalitemsize -Descending | Format-Table -AutoSize | Out-File -PSPath 'C:\temp\Postfachgroessen.txt'