Exchange Online / Office 365 : Erstellen einer dynamischen Verteilerliste

Um uns die Arbeit etwas zu erleichtern haben wir unseren internen E-Mail Verteiler auf eine DynamicDistributionGroup in Exchange Online umgestellt. Das erspart uns die Arbeit neue Mitarbeiter immer manuell in den Verteiler aufzunehmen, außerdem reduziert es die Fehler (oder das vergessen die neuen User hinzuzufügen). Da wir in unserer Umgebung auch einige Funktionspostfächer haben mussten diese ausgeschlossen werden.

Erstmal habe ich eine Verteiler Gruppe erstellt in der ich die ganzen Funktionspostfächer aufnehme.
New-DistributionGroup -Name 'NODYNDIS'
Set-DistributionGroup -Identity 'NODYNDIS' -HiddenFromAddressListsEnabled $True
Mit einem ADD Befehl kann man neue Funktionspostfächer hinzufügen.
Add-DistributionGroupMember -Identity 'NODYNDIS' -Member 'user-email@domain'
Dann brauchen wir den DN der Gruppe für den Filter in der dynamischen Gruppe
Get-Group -Identity 'NODYNDIS' | Select-Object -ExpandProperty DistinguishedName

CN=NODYNDIS,OU=xxx,OU=xxx,DC=xxx,DC=xxx,DC=xxx
Dann kann man die dynamische Gruppe erstellen.
New-DynamicDistributionGroup -Name 'TESTVERTEILER' -RecipientFilter {((RecipientTypeDetails -eq 'UserMailbox') -and -not (MemberofGroup -eq 'CN=NODYNDIS,OU=xxx,OU=xxx,DC=xxx,DC=xxx,DC=xxx') -and -not (UserAccountControl -eq 'AccountDisabled, NormalAccount'))}
Kurz zur Erklärung der Filter :
(RecipientTypeDetails -eq 'UserMailbox')  : Es muss sich um ein Benutzer Postfach handeln
-and -not (MemberofGroup -eq 'CN=NODYNDIS,OU=xxx,OU=xxx,DC=xxx,DC=xxx,DC=xxx') : und nicht Mitglied dieser Gruppe
-and -not (UserAccountControl -eq 'AccountDisabled, NormalAccount') : User darf nicht deaktivert sein
Anzeigen aller Empfänger in dem dynamischen Verteiler
$mygroup = Get-DynamicDistributionGroup "TESTVERTEILER"
Get-Recipient -RecipientPreviewFilter $myGroup.RecipientFilter | Select Name,PrimarySmtpAddress

Infos :
Filterbare Eigenschaften für RecipientFilter
New-DynamicDistributionGroup
New-DistributionGroup
Set-DistributionGroup


Exchange Online / Office 365 : Connect to Exchange Online using Exchangev2 Module

Installieren des Modules :
Install-Module -Name ExchangeOnlineManagement
Jetzt kann man mal prüfen ob alles sauber installiert ist.
Verbindung zu Exchange Online aufbauen
$ParaConnectExchange = @{
   UserPrincipalName    = 'ADMIN-USER'
   ShowProgress         = $false
   ShowBanner           = $false
   EnableErrorReporting = $false
   UseMultithreading    = $true
   TrackPerformance     = $false
}
Connect-ExchangeOnline @ParaConnectExchange

Das ist der neue Weg, und wenn man MFA aktiviert hat erscheint jetzt auch die Abfrage.

Exchange 2016 / Exchange Online : Ressourcen Postfach Betreff

Problem : Ressourcen Postfach zeigt Organisator anstatt des Betreffs im Kalender an
Lösung :
Set-CalendarProcessing -Identity RAUMPOSTFACH -DeleteSubject $False -AddOrganizerToSubject $False
überprüfen kann man das ganze mit
Get-CalendarProcessing -Identity 'RAUMPOSTFACH' | fl
Quelle : https://docs.microsoft.com/de-de/exchange/troubleshoot/client-connectivity/calendar-shows-organizer-name

Exchange Online / Office 365 : DistributionGroup "Sie verfügen nicht über ausreichende Berechtigungen"

Problem : Beim Versuch eine DistributionGroup zu bearbeiten erscheint die Meldung das man nicht über ausreichend Rechte verfügt.
Sie verfügen nicht über ausreichende Berechtigungen. Dieser Vorgang kann nur von einem Manager der Gruppe ausgeführt werden.
    + CategoryInfo          : NotSpecified: (:) [Remove-DistributionGroup], OperationRequiresGroupManagerException
Lösung : Das Problem ist schnell mit Powershell gefixt.
Set-DistributionGroup -Identity VERTEILEREMAIL -ManagedBy "NEUERUSER" -BypassSecurityGroupManagerCheck
wenn der vorhandene Owner nicht überschrieben werden soll dann kann man diesen Befehl verwenden zu hinzufügen neuer Owner
Set-DistributionGroup -Identity 'VERTEILEREMAIL' -ManagedBy @{Add='USER1','USER2'} -BypassSecurityGroupManagerCheck -WhatIf
Quelle : https://docs.microsoft.com/de-de/exchange/troubleshoot/groups/no-sufficient-permissions-moving-dg

Exchange Online / Office 365 : Erstellen eines Mailcontact im Exchange Hybrid

Erstmal eins Vorweg , und ja ich muss mir das auch merken ;-)
Im Hybrid Exchange Mode müssen alle Befehle gegen den lokalen Exchange ausgeführt werden !

Auch hier ist das WhatIf auf true gesetzt d.h. hier wird nur getestet aber nicht ausgeführt. Ist man sich sicher kann man das true auf false ändern.
<# Mailcontact #>
$NewMailContactParameter = @{
    Name                 = 'demo-contact' 
    Alias                = 'demo-contact' 
    DisplayName          = 'demo-contact' 
    OrganizationalUnit   = 'OU=dev_mailobjects,OU=dev,DC=example,DC=box'
    ExternalEmailAddress = 'demo-contact@service.example.box' 
    WhatIf               = $true
}
New-MailContact @NewMailContactParameter
testen ob alles funktioniert hat kann man das mit dem Befehl
Get-Recipient demo-contact@service.example.box

Name      RecipientType
----      -------------
demo-contact MailContact  

Exchange Online / Office 365 : Erstellen einer Shared Mailbox im Hybrid Mode

Erstmal eins Vorweg , und ja ich muss mir das auch merken ;-)
Im Hybrid Exchange Mode müssen alle Befehle gegen den lokalen Exchange ausgeführt werden !

Wenn man nun eine neue Shared Mailbox haben möchte kann man das mit diesem snippet in der Exchange Shell machen. Auch hier ist das WhatIf auf true gesetzt d.h. hier wird nur getestet aber nicht ausgeführt. Ist man sich sicher kann man das true auf false ändern.
$NewRemMailPara = @{
    Name                         = 'NAME_DER_SHARED_MAILBOX' 
    OnPremisesOrganizationalUnit = 'OU_IM_LOKALEN_AD' 
    DisplayName                  = 'DISPLAYNAME_DER_SHARED_MAILBOX'
    UserPrincipalName            = 'UPN_DER_MAILBOX'
    RemoteRoutingAddress         = 'REMOTE_ROUTING_ADDRESS (normalerweise NAME@TENANT.mail.onmicrosoft.com'
    Alias                        = 'ALIAS_DER_SHARED_MAILBOX'
    PrimarySmtpAddress           = 'PRIMÄRE_EMAIL_ADRESSE'
    WhatIf                       = $true
}
New-RemoteMailbox -Shared @NewRemMailPara
hier ein Beispiel
$NewRemMailPara = @{
    Name                         = 'TEST Team' 
    OnPremisesOrganizationalUnit = 'OU=dev_mailobjects,OU=dev,DC=example,DC=box' 
    DisplayName                  = 'TEST Team'
    UserPrincipalName            = 'test_team@DOMAIN'
    RemoteRoutingAddress         = 'test_team@TENANT.mail.onmicrosoft.com'
    Alias                        = 'TEST_Team'
    PrimarySmtpAddress           = 'test_team@DOMAIN'
    WhatIf                       = $true
}
New-RemoteMailbox -Shared @NewRemMailPara
Auf dem selben Weg kann man Räume und Resourcen anlegen hierzu muss nur der Parameter Shared getauscht werden. Mögliche Werte sind
-Room
-Equipment
oder ein User Postfach
Quelle : https://docs.microsoft.com/en-us/powershell/module/exchange/new-remotemailbox?view=exchange-ps
“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)