Office 365 : Installieren des MSOL Modul für Powershell

Installieren des MSOL Modul für Powershell

Zuerst installieren wir das Packet für das Modul das kann bei Microsoft direkt heruntergeladen werden.
Download Microsoft Online Services-Anmelde-Assistent für IT-Experten RTW
dann starten wir eine Shell und installieren das Modul im Powershellkontext.
Install-Module -Name MSOnline
ab jetzt kann man mit Powershell mit dem cmdlet
Connect-MsolService
eine Verbindung zu Office 365 herstellen.
Quelle : https://docs.microsoft.com/de-de/office365/enterprise/powershell/connect-to-office-365-powershell

Exchange Online / Office 365 : Message Trace der Nachrichten

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 Tage
Get-MessageTrace -StartDate (get-date).adddays(-25) -EndDate (get-date).addhours(-0) -SenderAddress 'ABSENDERADRESSE'

Exchange Online / Office 365 : Erstellen neuer Verteiler und Zuordnen der Mitglieder

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

Exchange Online / Office 365 : Connect mit der Powershell

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

Exchange Online / Office 365 : E-Mail senden über die Powershell

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

Microsoft Excel/Word zeigt falschen, sperrenden Benutzer im "Dokument wird verwendet" Dialog an

Ich erhalte in letzter Zeit gehäuft die Meldung, dass Benutzer Dateien sperren, aber ein falscher Name bei der Sperre angezeigt wird.

Als Beispiel zur Erklärung:
Herr X öffnet eine Excel-Datei und erhält die Meldung, dass Herr Y die Datei bereits geöffnet hat. Herr Y hat diese Datei aber nicht geöffnet, sondern Herr Z. Trotzdem wird Herr Y als sperrender Benutzer angezeigt!
Warum der falsche Name?
Wenn man eine Office-Datei öffnet, dann wird im gleichen Verzeichnis eine temporäre Datei mit einer „~“ vorweg erstellt (z.B.: ~$Mappe1.xlsx). Darin wird festgehalten, welcher Benutzer die Datei geöffnet hat. Normalerweise sollte die „~“-Datei nach dem schließen automatisch gelöscht werden, was augenscheinlich aber nicht immer funktioniert und die Datei bleibt erhalten. Beim nächsten Öffnen kann keine NEUE „~“-Datei erzeugt werden und die Benutzerinformationen bleiben bestehen. Wenn jetzt ein anderen Benutzer die Datei öffnen will, werden die veralteten Informationen angezeigt.

LÖSUNG: Wenn man die „~“-Datei löscht, dann werden die Informationen beim nächsten Öffnen wieder richtig angezeigt.
Schaut man mal in die „~“-Datei mit einem Editor rein, dann sieht man, dass hierin der bearbeitende Benutzer vermerkt ist. Auffällig ist meiste das veraltete Erstellungsdatum. Generell könnte man auf seinem Fileserver nach solchen Dateien suchen und alle, die älter als zwei Tage sind löschen!

“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)