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
Wenn man Exchange Online mit der Powershell administrieren will muss zuvor ein connect aufgebaut werden. Dieser wird mit diesem Schnipsel aufgebaut.
<# Connect To Exchange Online #>
if (-not ($ExoCreds)) {
$ExoCreds = Get-Credential -Message 'Global Admin please' -UserName 'ADMINUSER'
}
$ProxyOptions = New-PSSessionOption -ProxyAccessType None
$ExoSession = $null
Get-PSSession -ErrorAction SilentlyContinue | Where-Object {$_.ComputerName -eq 'outlook.office365.com'} | Remove-PSSession -ErrorAction SilentlyContinue -Confirm:$false
$ExoSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $ExoCreds -Authentication Basic -AllowRedirection -SessionOption $ProxyOptions
Import-PSSession $ExoSession -DisableNameChecking -AllowClobber
E-Mail senden über Office 365 mit der Powershell
[System.Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$PWD = 'YOURPASSWORD' | ConvertTo-SecureString -AsPlainText -Force
$USER = New-Object System.Management.Automation.PSCredential ("USERLOGIN", $PWD)
$Para = @{
SmtpServer = 'smtp.office365.com'
UseSsl = $true
Port = '587'
Credential = $USER
Body = 'TESTMAIL'
To = 'EMPFÄNGERADRESSE'
From = 'SENDERADRESSE'
Subject = 'Testmail'
}
Send-MailMessage @Para
Problem : Ich möchte das Automapping eines freigegebenen Postfaches bei einem Outlook Client verhindern. Normalerweise ja echt kein großer Akt doch leider habe ich bei den Befehlen
Remove-MailboxPermission -Identity user@company.box -User adminuser@company.box -AccessRights FullAccess
Add-MailboxPermission -Identity user@company.box -User adminuser@company.box -AccessRights Fullaccess -AutoMapping $false
immer nur timeouts bekommen. Deswegen musste ich einen anderen Weg gehen.
Lösung :
Einmal kurz auf den Domaincontroller und
Active Directory Benutzer und Computer öffnen. Die Ansicht auf
"Erweiterte Features” stellen ! Dann habe ich die Eigenschaften des Benutzers user@company.box geöffnet und in den Reiter
“Attribut-Editor” gewechselt. Hier habe ich den Key
“msExchDelegateListLink” gesucht und manuell die Zuordnung auf adminuser@company.box entfernt
Problem : Bei einem frisch aufgesetzten Windows 2019 Server können als Domain Administrator diverse Einstellungen nicht vorgenommen werden. Ich konnte das bei den Desktop Icons und bei den Einstellungen für das Netzwerk beobachten
( Windows Icon -> Zahnrad -> Netzwerk und Internet -> Ethernet -> Adapteroptionen ändern )
Grund hierfür ist scheinbar die Default Einstellung der UAC
Lösung : Setzen einer GPO auf die Benutzerkontensteuerung
Computerkonfiguration/Windows-Einstellungen/Sicherheitseinstellungen/Lokale Richtlinien/Sicherheitsoptionen/Benutzerkontensteuerung: Administratorgenehmigungsmodus für das integrierte Administratorkonto diesen Wert auf "Aktiviert" setzen