Many ways to connect Powershell to Exchange Online

Hallo zusammen,

Wie man eine PowerShell Verbindung zu Exchange Online herstellt, habe ich euch ja schon vor Jahren im folgenden Blog Artikel aufgezeigt. https://blog.icewolf.ch/archive/2015/02/07/powershell-remoting-with-exchange-online.aspx

Kommt nun Multifaktor Authentication dazu, dann klappt das nicht mehr. Aber es gibt mehrere Möglichkeiten, welche ich euch hier in diesem Blog Artikel aufzeigen werde.

PowerShell aus dem Exchange Admin Center

Dazu kann man die PowerShell aus dem Exchange Admin Center benutzen. Vielleicht habt ihr ja RBAC Delegations eingerichtet und die Admins kommen nicht auf diesen Punkt. Ausserdem ist es etwas doof sich zuerst auf das ECP zu verbinden, um dann eine PowerShell Verbindung aufzumachen. Aber das ist der offizielle Weg.

Auf dem Computer braucht man keine Admin Rechte - wieso das so ist, erkläre ich euch gleich.

Danach kann man eine PowerShell Verbindung zu Exchange Online (Connect-EXOPSSession) oder zum Security and Compliance Center (Connect-IPPSSession) aufbauen.

Mit der Installation wird auch gleich eine Verknüpfung auf dem Desktop angelegt.

Schaut man sich die Verknüpfung mit einem Texteditor an, so steht dort folgendes. Die Applikation prüft also bei jedem Start, ob es eine neue Version gibt.

https://cmdletpswmodule.blob.core.windows.net/exopsmodule/Microsoft.Online.CSE.PSModule.Client.application#Microsoft.Online.CSE.PSModule.Client.application, Culture=neutral, PublicKeyToken=1975b8453054a2b5, processorArchitecture=msil

Ist eine neue Version verfügbar, so kann die gleich installiert werden.

Nachdem die Verbindung hergestellt ist, kann man das Modul ein bisschen genauer anschauen. Die Dateien werden also im %AppData%\Local abgelegt

$modules = Get-Module
$modules[0] | fl

Mit folgendem Script, lasse ich mir mal alle DLL's (Microsoft.Exchange.Management.ExoPowershellModule.dll) und deren Versionen anzeigen.

$ArrEXODLL = (Get-ChildItem -Path $($env:LOCALAPPDATA+"\Apps\2.0\") -Filter Microsoft.Exchange.Management.ExoPowershellModule.dll -Recurse )
Foreach ($Line in $ArrEXODLL)
{
 $Filename = $Line.FullName
 Write-Host "Filename: $filename"
 [System.Diagnostics.FileVersionInfo]::GetVersionInfo("$Filename").FileVersion
}

Wie man sieht, habe ich drei verschiedene DLL Versionen auf meinem PC

Schaut man sich mal den Pfad der neusten DLL an, so sieht das folgendermassen aus.

PowerShell Module aus der PSGallery

Eine weitere Möglichkeit kann ein Modul aus der PSGallery sein. Hier braucht man jedoch Admin Rechte auf dem PC um das Modul zu installieren.

Find-Module *EXO*
Find-Module Microsoft.Exchange.Management.ExoPowershellModule | fl

Mit folgendem Befehl, kann das Module aus der PSGallery installiert werden

Install-Module Microsoft.Exchange.Management.ExoPowershellModule

Mit folgendem Befehl, kann man sich die Details dazu anschauen. Das Modul befindet sich also in einem ganz anderen Verzeichnis.

Get-Module -ListAvailable Microsoft.Exchange.Management.ExoPowershellModule
Get-Module -ListAvailable Microsoft.Exchange.Management.ExoPowershellModule | fl

Ich habe mal versucht, herauszufinden, welche Version denn das PowerShell Modul aus der PS Gallery verwendet.

$modules = Get-Module
$modules[0] | fl
$filename = $module[0].Path
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("$Filename").FileVersion

Wie sich zeigt, ist das eine veraltete Version.

Funktionieren tut es trotzdem (noch)

Import-Module Microsoft.Exchange.Management.ExoPowershellModule
Get-Command -Module Microsoft.Exchange.Management.ExoPowershellModule
Das Modul hat nur eine einzige Funktion "New-ExoPSSession". Die setzt man folgendermassen ein:
$ExSession = New-ExoPSSession -UserPrincipalName [yourUPN]
Import-PSSession -Session $ExSession -DisableNameChecking -AllowClobber
Get-Mailbox

Azure Cloud Shell

Dass man auch von der Azure Cloud Shell, zu Exchange Online verbinden kann, habe ich in einem Blog Artikel von Thomas Maurer gelesen https://www.thomasmaurer.ch/2019/04/manage-office-365-exchange-online-from-cloud-shell/

So und nun viel Spass beim Administrieren von Exchange Online

Liebe Grüsse
Andres Bohren