Remote-Powershellverbindung herstellen

Um über die Powershell Befehle in der Office 365-Cloud abzusetzen, gibt es zwei Möglichkeiten, eine Verbindung aufzubauen; je nachdem, um was für eine Art Befehl es geht, muss man einen anderen Weg wählen.

Microsoft Online / Azure AD

Für die Verbindung via Microsoft Online wird eine zusätzliche Software auf dem Rechner benötigt; diese findet sich unter folgender Adresse: https://www.microsoft.com/en-us/download/details.aspx?id=41950
Nach der Installation und einem anschließenden Reboot findet sich im Startmenü das Programm „Microsoft Azure Active Directory Module for Powershell“. Startet man dieses, hat man eine normale Powershell, in der die MsOl-Bibliotheken bereits integriert sind.
Mit dem Befehl

Connect-MsOlService

öffnet sich ein Loginfenster von Office 365, bei Angabe korrekter Logindaten kann man alle Befehle rund um Microsoft Online nutzen

Exchange Online Remote PowerShell

Das hier ist veraltet. Aktuellere Informationen weiter unten. Das bleibt hier nur als Referenz.

Bei Remote Powershell bauen wir eine Verbindung zu, in Office 365 integrierten Exchange Online auf und nutzen dann unsere lokale Powershell, als wäre es eine Remote Powershell.
Dazu fordern wir von uns selber erst einmal Logindaten an:

$UserCredential = Get-Credential

Im Anschluss übergeben wir die Logindaten an Exchange Online und fordern eine Powershell-Sitzung an:

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection

Und wir sagen unserem lokalen Powershell, dass es die von Exchange Online importieren soll:

Import-PSSession $Session

Der Vorgang dauert manchmal etwas länger, aber im Anschluss können wir auf unserer lokalen Maschine arbeiten, als würden wir in der Powershell eines lokalen Exchanges arbeiten.

… wenn man das etwas häufiger gemacht hat und (zurecht) genervt ist, hier ist ein One-Liner, der alle drei Schritte oben durchführt:

Import-PSSession $(New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $(Get-Credential) -Authentication Basic -AllowRedirection)

Exchange Online PowerShell V2

Mittlerweile hat Microsoft ein eigenes PS-Modul geliefert, welches z.B. ebenfalls MFA unterstützt. Wir können dies ganz einfach über NuGet installieren:

PS C:\WINDOWS\system32> Install-Module -Name ExchangeOnlineManagement

Der NuGet-Anbieter ist erforderlich, um den Vorgang fortzusetzen.
PowerShellGet erfordert die NuGet-Anbieterversion 2.8.5.201 oder höher für die Interaktion mit NuGet-basierten
Repositorys. Der NuGet-Anbieter muss in "C:\Program Files\PackageManagement\ProviderAssemblies" oder
"C:\Users\tino.ruge\AppData\Local\PackageManagement\ProviderAssemblies" verfügbar sein. Sie können den NuGet-Anbieter
auch durch Ausführen von 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force' installieren. Möchten
Sie den NuGet-Anbieter jetzt durch PowerShellGet installieren und importieren lassen?
[J] Ja  [N] Nein  [H] Anhalten  [?] Hilfe (Standard ist "J"): J

Nicht vertrauenswürdiges Repository
Sie installieren die Module aus einem nicht vertrauenswürdigen Repository. Wenn Sie diesem Repository vertrauen, ändern
Sie dessen InstallationPolicy-Wert, indem Sie das Set-PSRepository-Cmdlet ausführen. Möchten Sie die Module von
'PSGallery' wirklich installieren?
[J] Ja  [A] Ja, alle  [N] Nein  [K] Nein, keine  [H] Anhalten  [?] Hilfe (Standard ist "N"): J

Verbindung im Anschluss funktioniert wie folgt:

Connect-ExchangeOnline -Credential $(Get-Credential)

Danach lassen sich, wie gewohnt, PS-Befehle im Exchange Online ausführen. Das Import-Session etc. übernimmt das CMDlet selbstständig.

Kategorien: Microsoft 365, Powershell

tino-ruge.de wird tino-kuptz.de

Im Laufe des Jahres 2024 wird dieser Blog umziehen. Alle Inhalte werden 1:1 weitergeleitet, nix geht verloren. Neue Domain, alter Autor, alter Inhalt.