PowerShell-Cmdlets
Beachten Sie: Die folgende Zusammenstellung von PowerShell-Cmdlets ist eine Illustration der notwendigen Maßnahmen zur Vorbereitung einer erfolgreichen PowerShell-Verbindung zu Microsoft 365 Exchange Online. Die vollständige Dokumentation und Unterstützung bei Problemen finden Sie bei Microsoft. Insbesondere Vollständigkeit und Aktualität der folgenden Beispiele können abweichen.
PowerShell, CmdletsCmdlets, PowerShellVoraussetzung
Die PowerShell-Beispiele setzen administrative Privilegien voraus. Öffnen Sie die PowerShell daher als Administrator. Verwenden Sie mindestens die Version 5.1 der PowerShell. Aktualisieren Sie gegebenenfalls die Version der lokalen PowerShell.
So prüfen Sie die Version der lokalen PowerShell:
$PSVersionTable
Die meisten Cmdlets erfordern externe Aufrufe. Speziell die Verbindung zu Exchange Online über die PowerShell benötigt die Möglichkeit des Fernzugriffs. Um fehlende Module und den PackageProvider zu installieren, müssen Sie gegebenenfalls die TLS-Version anpassen:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Damit die PowerShell Fernzugriffe durchführen kann, müssen Sie diese Funktion freischalten:
Enable-PSRemoting
Sie sollten dabei nur signierte externe Cmdlets und Skripte ausführen. Die Ausführung müssen sie manuell bestätigen:
Set-ExecutionPolicy RemoteSigned
Zertifikate
Bei Erzeugung eines selbstsignierten Zertifikats sollten Sie das Ergebnis bzw. den Fingerabdruck aus der PowerShell kopieren und zur weiteren Verwendung in anderen Cmdlets oder der Konfiguration von ELOxc separat speichern.
So erzeugen Sie ein Zertifikat:
New-SelfSignedCertificate -DnsName "dns.name" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(5) -KeySpec KeyExchange
Der Parameter DnsName sollte keine Wildcards enthalten. Das Host-Zertifikat von ELOxc (Z3) erfordert den lokalen Fully-Qualified Domain Name (FQDN), das Zertifikat der App-Registrierung (Z4) hingegen den Mandantennamen für Microsoft 365. Wir empfehlen, den Fingerabdruck neuer Zertifikate stets zu sichern.
In diesem Beispiel würde 0C202737F8B809FAFA532C61E878F8DEEB385787
als Z3 und 2E5B4D92DFBE8CFB49CF57106534EC50B12E6974
als Z4 verwendet werden. Da Z4 für die App-Registrierung in Microsoft 365 benötigt wird, müssen Sie es ohne privaten Schlüssel als CER-Datei exportieren:
$cert = Get-ChildItem -Path cert:\LocalMachine\My\2E5B4D92DFBE8CFB49CF57106534EC50B12E6974
$cert | Export-Certificate -FilePath C:\XcAppReg.cer
Wenn Sie für den Web-Host von ELOxc und die App-Registrierung dasselbe Zertifikat verwenden möchten (Z3=Z4), erzeugen Sie das Zertifikat mit zwei Werten für DnsName.
In diesem Fall würden Sie nur einen Fingerabdruck (hier: 9428F14E2E9A50DEC74D8EFD9D95DB5C3602F38D
) benötigen. Sie können den DNS-Namen im lokalen Zertifikatspeicher überprüfen:
Modul für Exchange Online installieren
Vorab können Sie prüfen, ob das Modul für Exchange Online (Modul ExchangeOnlineManagement) lokal verfügbar ist:
Get-Module
Fehlt es, müssen Sie es zwingend herunterladen und installieren. Installieren Sie zuerst den PackageProvider für NuGet und importieren ihn. Danach benötigen Sie das Modul PowerShellGet.
So installieren und importieren Sie den PackageProvider:
Install-PackageProvider -Name NuGet -Force
Import-PackageProvider -Name NuGet
So installieren Sie das PowershellGet-Modul:
Install-Module PowershellGet -Force
Nun können Sie das Modul für Exchange Online installieren und importieren:
Install-Module -Name ExchangeOnlineManagement
Import-Module -Name ExchangeOnlineManagement
Modul für Exchange Online testen
Wenn das Modul für Exchange Online installiert ist, importiert es ELOxc zur Laufzeit automatisch. Ist der Import erfolgreich, kann die Verbindung zu Exchange Online aufgebaut werden. Wenn Sie die App-Registrierung eingerichtet haben, können Sie die PowerShell-Verbindung manuell testen. Verwenden Sie dazu die App-ID und den Mandanten (Tenant) der Registrierung:
Connect-ExchangeOnline -CertificateThumbPrint 2E5B4D92DFBE8CFB49CF57106534EC50B12E6974 -Organization "tenant.onmicrosoft.com" -AppID "cbfafa12-6c7-4586-a9c7-f94e923f1d26"
Nach erfolgreichem Verbindungsaufbau können Sie die beiden erforderlichen Cmdlets Get-Mailbox und Get-MailboxPermission testen:
Get-Mailbox -RecipientTypeDetails 'sharedmailbox' * | Get-MailboxPermission | where {$_.user.tostring() -ne "NT AUTHORITY\SELF" -and $_.IsInherited -eq $false} | Select-Object -Property identity, user
Offene PowerShell-Verbindungen sollten Sie am Ende folgendermaßen schließen:
Disconnect-ExchangeOnline
Um den Zugriff der PowerShell-Verbindung durch ELOxc auf bestimmte Postfächer einzuschränken, können Sie New-ApplicationAccessPolicy verwenden. Dazu muss eine PowerShell-Verbindung bestehen:
New-ApplicationAccessPolicy -AppId cbfafa12-36c7-4586-a9c7-f94e923f1d26 -PolicyScopeGroupId xc2@tenant.onmicrosoft.com -AccessRight DenyAccess -Description "Exclude xc2"