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