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
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
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
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
Ich hab hier ein paar nützliche Befehle die ein Message Tracing der Nachrichten ermöglicht die in Exchange Online gesendet oder empfangen werden. Als erstes muss die
Verbindung zu Exchange Online stehen.
Zeige mir
alle Mails die in den
letzten 24 Stunden den Status
FAILED hatten
Get-MessageTrace -StartDate (Get-Date).addhours(-24) -EndDate (Get-Date).addhours(-0) | Where-Object {($_.Status -eq 'Failed')}
Zähle Mails mit einem
bestimmten Betreff der letzten
24 Stunden(Get-MessageTrace -StartDate (Get-Date).addhours(-24) -EndDate (Get-Date).addhours(-0) | Where-Object {($_.Subject -like "Discount*")}).count
Zeige mir
alle E-Mails mit einem
bestimmten Empfänger der letzten
24 Stunden mit dem Status FAILED und exportiere diese in eine CSV
Get-MessageTrace -StartDate (get-date).adddays(-1) -EndDate (get-date).addhours(-0) -Status 'Failed' -RecipientAddress 'EMAILADRESSE' | Export-CSV -Path 'PFAD_ZUR_CSV\EMAILADRESSE.csv' -Encoding UTF8
Zeige mir
alle E-Mails eines
Absenders der letzten
25 TageGet-MessageTrace -StartDate (get-date).adddays(-25) -EndDate (get-date).addhours(-0) -SenderAddress 'ABSENDERADRESSE'
Als erstes muss die
Verbindung zu Exchange Online stehen. Für meine Funktionen hatte ich eine CSV als Grundlage.
Die Struktur der CSV sah wie folgt aus :
Verteiler;Mitglieder
Verteiler-NAME;"USER1;USER2;USER3;USER4"
Aus Grunden der Sicherheit ist hier WhatIf auf True gesetzt ! d.h. es werden keine Verteiler oder Mitglieder hinzugefügt.
Wenn ihr sicher seit das alles richtig ist könnt ihr einfach bei WhatIf
$true auf
$false ändern.
#region Vars
$DLCSV = Import-Csv -Path "$env:HOMEDRIVE\DEIN_PFAD_ZUR_CSV\Verteiler.csv" -Encoding UTF8 -Delimiter ';'
# new object
$CsvOutput = @()
#endregion Vars
#region CreateGroup_ReadCSV
foreach ($entry in $DLCSV) {
$DL_NAME = $entry.Verteiler
$DL_MEMBERS = $entry.Mitglieder
$DL_MEMBER = ($DL_MEMBERS -split ';')
#region CreateNewDL
$NewDisGroupParameter = $null
$NewDisGroupParameter = @{
Name = $DL_NAME
WhatIf = $true
}
$crDis = (New-DistributionGroup @NewDisGroupParameter)
#endregion CreateNewDL
Start-Sleep -Seconds 1.5
#region AddMembersToDL
foreach ($m in $DL_MEMBER) {
$user = $m.Trim()
Add-DistributionGroupMember -Identity $DL_NAME -Member $user -whatif:$true
}
#endregion AddMembersToDL
}
#endregion CreateGroup_ReadCSV