Dienstag, 31. Oktober 2017

[EXCHANGE] Häufig verwendete Exchange Befehle



Einem Benutzer (administrator@contoso.com) bei allen Benutzern "Vollzugriff" gewähren:
Je nach grösse der Organisation, empfehle ich beim Befehl noch folgendes: -Automapping $false

Get-Mailbox -ResultSize unlimited -Filter {(RecipientTypeDetails -eq 'UserMailbox') -and (Alias -ne 'Admin')} | Add-MailboxPermission -User administrator@contoso.com -AccessRights fullaccess -InheritanceType all

Maximale Grösse von Mails für Empfang / Senden:
Get-TransportConfig | fl *max*

sowie

Get-ReceiveConnector | Format-Table Name,Max*Size,MaxRecipientsPerMessage; Get-SendConnector | Format-Table Name,MaxMessageSize; Get-AdSiteLink | Format-Table Name,MaxMessageSize; Get-DeliveryAgentConnector | Format-Table Name,MaxMessageSize; Get-ForeignConnector | Format-Table Name,MaxMessageSize

Grösse und Quoten aller Postfächer anzeigen (export in CSV):

Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Select DisplayName,StorageLimitStatus,@{name="TotalItemSize (MB)";expression={[math]::Round((($_.TotalItemSize.Value.ToString()).Split("(")[1].Split(" ")[0].Replace(",","")/1MB),2)}},@{name="TotalDeletedItemSize (MB)";expression={[math]::Round((($_.TotalDeletedItemSize.Value.ToString()).Split("(")[1].Split(" ")[0].Replace(",","")/1MB),2)}},ItemCount,DeletedItemCount | Sort "TotalItemSize (MB)" -Descending | Export-CSV "C:\My Documents\All Mailboxes.csv" -NoTypeInformation

Datenbank Grössenlimits anzeigen:
Get-MailboxDatabase | fl StorageGroupName,Name,issuewarningquota,ProhibitSendQuota,ProhibitSendReceiveQuota


Weiterleiten an externen Empfänger ohne Kontakt

set-mailbox "Alias der Mailbox" -ForwardingSmtpAddress ADRESSE@contoso.com

ohne Kopie im Postfach:
-DeliverToMailboxAndForward $false

Zum deaktivieren:
set-mailbox "Alias der Mailbox" -ForwardingSmtpAddress $NULL


Wichtig dabei ist noch folgendes:

Weiterleitung an externe Domänen aktivieren:

Set-RemoteDomain –AutoForwardEnabled $true
Die Frage nach "Identity" mit "*" beantworten


Whitelisteinträge anzeigen:

Get-ContentFilterConfig

->BypassedSender
->BypassedSenderDomains

Eintrag in Whitelist hinzufügen:

$list = (Get-ContentFilterConfig).BypassedSenders
$list
$list.add("asd@contoso.com")
Set-ContentFilterConfig -BypassedSenders $list

bzw für Domänen:

$list = (Get-ContentFilterConfig).BypassedSenderDomains
$list
$list.add("contoso.com")
Set-ContentFilterConfig -BypassedSenderDomains $list


Status der Indexierung einer Datenbank:

Get-MailboxDatabaseCopyStatus * | ft -auto


Einer Gruppe (distributiongroup) Zugriff auf alle Kalender gewähren:
Folgendes als .ps1 script speichern:

#Editor, Author, Owner, PublishingEditor

$accessrights = "PublishingEditor"
$distributiongroup = "AlleKalender"
$groupmembers = Get-Mailbox -ResultSize unlimited | Where-Object { $_.RecipientType -eq "UserMailbox" }

foreach ( $member in $groupmembers )
{
    $permissions = ""
    $mailbox = Get-Mailbox -Identity $member.alias
    $calendar = (($mailbox.SamAccountName) + ":\" + (Get-MailboxFolderStatistics -Identity $mailbox.SamAccountName -FolderScope Calendar | Select-Object -First 1).Name)
    foreach ( $perm in ( Get-MailboxFolderPermission -Identity $calendar ))
    {
        $permissions += @($perm.User.DisplayName)
    }
   
    if ( $permissions -contains $distributiongroup.Name )
    {
        # Distributiongroup already has permission groupmember calendar
        Set-MailboxFolderPermission -Identity $calendar -User $distributiongroup -AccessRights $accessrights
    }
    else
    {
        # Distributiongroup has no permission to groupmember calendar
        Add-MailboxFolderPermission -Identity $calendar -User $distributiongroup -AccessRights $accessrights
    }
}


Nach Nachrichten suchen:
Get-MessageTrackingLog –Sender “xy@xy.com” -Start "9/8/2018 0:00AM" -End "9/11/2018 0:00PM"

Wilcard Version:
Get-MessageTrackingLog -ResultSize Unlimited -Start "9/8/2018" -End "9/11/2018" | where{$_.sender -like "*@xy.com"} | select-object Timestamp,SourceContext,Source,EventId,MessageSubject,Sender,{$_.Recipients}


Gelöschte / Wiederherstellbare Mails suchen und ins Discoverysuchpostfach kopieren:

Suche nach Mails mit Bestimmten Absender:
Search-Mailbox "XY" -SearchQuery "from:XY@XY.com" -TargetMailbox "Discoverysuchpostfach" -TargetFolder "XY Recovery" -LogLevel Full

Suche Nach Gelöschten / Wiederherstellbaren Mails:
Search-Mailbox "XY" -SearchDumpsterOnly -TargetMailbox "Discoverysuchpostfach" -TargetFolder "XY Recovery" -LogLevel Full

Suche Nach Gelöschten / Wiederherstellbaren Mails von allen Postfächern:
Get-Mailbox -ResultSize Unlimited | Search-Mailbox -SearchDumpsterOnly -TargetMailbox "Discoverysuchpostfach" -TargetFolder "All users Deleted mail items" -LogLevel Full

Suche Wort von allen Postfächern:
Get-Mailbox -ResultSize Unlimited | Search-Mailbox -SearchQuery “XY” -TargetMailbox "Discoverysuchpostfach" -TargetFolder "All users Deleted mail items XY" -LogLevel Full


Elementgrösse anpassen

Get-TransportConfig | fl MaxReceiveSize,MaxSendSize
Set-TransportConfig -MaxReceiveSize 1000MB -MaxSendSize 1000MB

Alle connectors prüfen:
Nachrichtenfluss -> sende / empfang

Shell
Get-TransportConfig | fl *max*

Set-TransportConfig -ExternalDsnMaxMessageAttachSize 1GB
Set-TransportConfig -InternalDsnMaxMessageAttachSize 1GB



Abwesenheitsmeldung jeden Tag
Script für den Abwesenheitsmeldung, welche dies bei allen Usern deaktivert und wieder aktiviert
(dadurch geghen die Mails nochmal an einen Sernder

Exchange Powershell:

foreach ($obj in (Get-Mailbox  | Get-MailboxAutoReplyConfiguration |` 
where {($_.autoreplystate -eq "enabled")` -or ($_.autoreplystate -eq "scheduled" -and $_.starttime -le ([DateTime]::Now) -and $_.endtime -ge ([DateTime]::Now))}))
{      if ($obj.autoreplystate -match "Enabled")`
           {Set-MailboxAutoReplyConfiguration $obj.identity -AutoReplyState "disabled";
           Set-MailboxAutoReplyConfiguration $obj.identity -AutoReplyState "enabled";}
       elseif ($obj.autoreplystate -match "Scheduled")`
           {Set-MailboxAutoReplyConfiguration $obj.identity -AutoReplyState "disabled";
           Set-MailboxAutoReplyConfiguration $obj.identity -AutoReplyState "scheduled" -starttime $obj.starttime -endtime $obj.endtime ;}
}
 
Am besten per .bat File ausführen (V15 ggf anpassen, je nach Exchange Version):
PowerShell.exe -command ". 'C:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; . C:\XXXXXX\ResetAbwesenheitsmeldungAlle4H.ps1"


Wiederherstellbare, gelöschte Elemente wiederherstellen
 Da per OWA jedes einzelne Mail ausgewählt werden muss, am einfachsten per Exchange Shell

Restore-RecoverableItems -Identity xy@contoso.de

(sollte der Befehl nicht gefunden werden, muss dem Admin ggf. erst noch eine Rolle zugewiesen werden:
New-ManagementRoleAssignment –Role "Mailbox Import Export" –User Administrator
(Powershell neu starten) )

Keine Kommentare:

Kommentar veröffentlichen