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 | flMit 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.
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)
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