Africa Studio - stock.adobe.com

Die Microsoft-365-Verwaltung mit PowerShell vereinfachen

Viele Office-365-Einstellungen finden Sie im Adminportal. Leider lässt die Performance jedoch zu wünschen übrig. Wir erklären, wie PowerShell den Prozess beschleunigen kann.

Sind Sie frustriert von den trägen Reaktionszeiten von Microsoft 365 Admin Center? Zum Glück sind sie auf das langsame Webportal nicht angewiesen. Wenn Sie auf die Verwaltung mit PowerShell umstellen, erreichen Sie schnellere und reibungslose Abläufe.

Microsoft fügt kontinuierlich Erweiterungen und neuen Funktionen zu Microsoft 365 hinzu und überarbeitet das Verwaltungsportal. Administratoren müssen aufmerksam sein, um neue Ansichten und Optionen innerhalb des Portals zu finden, mit denen sie die Sicherheit, Compliance und Einstellungen aller Microsoft-365-Dienste verwalten. Statt sich durch die zahlreichen Seiten zu klicken, um wiederkehrende Aufgaben über einen Browser auszuführen, können Sie mit PowerShell-Skripten einen effizienteren und automatisierten Ansatz verfolgen.

Aufgrund der häufigen Änderungen an der Webkonsole fehlt es oft an aktueller Dokumentation im Unternehmen, so dass viele Administratoren auf Video-Tutorials, Blog-Beiträge und eigene Experimente zurückgreifen müssen, um zu lernen, wie sie die neuen Verwaltungsfunktionen nutzen. PowerShell-Skripte können jedoch die allermeisten alltäglichen Verwaltungsaufgaben abdecken – gelegentlich bieten sie sogar mehr Funktionen als das Admin Center. Außerdem laufen PowerShell-Skripte häufig schneller durch, als die Verarbeitung von Befehlen aus dem Admin Center.

Wann PowerShell besser geeignet ist als das Admin Center

PowerShell erfüllt in Microsoft zweierlei Aufgaben. Zum einen ist es in der Lage, kleine, einzelne Befehle auszuführen, wie das Neustarten eines Remote-Servers oder das Extrahieren einer Liste nicht-lizenzierter Benutzer aus der Microsoft-365-Plattform.

PowerShell eignet sich zweitens zum Automatisieren von sich wiederholenden Aufgaben. Das gilt auch für bestimmte Prozesse, die im Admin Center recht langwierig und kompliziert sind. Dazu gehört das deaktivieren von mehreren Benutzerkonten gleichzeitig, das Erstellen von Listen und Berichten (zum Beispiel eine Liste aller Benutzer mit aktivierter Multifaktor-Authentifizierung) oder das Löschen einer SharePoint-Website mit mehreren Unterseiten.

So deaktivieren Sie den Zugriff auf Microsoft-365

Sie können über Active Directory den Zugang von Konten zum Admin Portal einschränken. Die Änderungen werden automatisch in Microsoft 365 übernommen, und die Accounts deaktiviert. Es kann jedoch sinnvoll sein, diese Konten in Active Directory beizubehalten und lediglich ihre Anmeldung in Microsoft 365 zu blockieren.

Um die Anmeldung für eine große längere Liste von Benutzern im Webportal zu deaktivieren, müssen Sie im Bereich Aktive Nutzer jeden einzelnen Namen einzeln auswählen und markieren.

Wählen Sie dann die Option Anmeldung blockieren. Da Sie das für jeden Benutzer einzeln tun müssen und Sie die Benutzer auch nicht nach Schlüsselwörtern durchsuchen können, ist das Admin Center für diese Aufgabe in größeren Unternehmen so gut wie unbrauchbar.

Dieses Problem haben Sie mit PowerShell nicht – Sie können zum Beispiel Benutzer anhand eines Suchbegriffs finden und auswählen. Das folgende PowerShell-Skript liest die Liste der zu bearbeitenden Benutzer und führt dann die Aktion für jede in einer vorab erstellten Datei aufgeführte E-Mail-Adresse aus.

Diese Datei sollte aus Klartext-E-Mail-Adressen bestehen, die jeweils in einer Zeile stehen, in etwa so:

[email protected]

[email protected]

[email protected]

Das zugehörige Skript für eine solche Datei namens Benutzerkonten.txt sieht dann so aus:

Get-Content "C:\Eigene Dokumente\Benutzerkonten.txt" | ForEach { Set-MsolUser -UserPrincipalName $_ -BlockCredential $true }

Der Automatisierungsaspekt von PowerShell bedeutet, dass Sie dieses Skript manuell auslösen oder es regelmäßig durchlaufen lassen können.

Löschen von übergeordneten Seiten, die Unterseiten in SharePoint Online enthalten

PowerShell ist eine bessere Wahl als das Admin Center, wenn es darum geht, eine SharePoint-Seite mit mehreren Unterseiten zu löschen.

Über das Webportal müssten Sie alle Unterseiten manuell entfernen, bevor Sie die übergeordnete Seite löschen können, da das System sonst eine Fehlermeldung generiert. Je nachdem, wie viele Unterseiten Sie haben, würden Sie sehr lange daran sitzen.

PowerShell reduziert hier den Aufwand erheblich, indem es alle Unterseiten liest und sie automatisch löscht, bevor es die übergeordnete Webseite entfernt. Bei diesem Ansatz müssen Sie interaktiv einige Parameter eingeben, darunter Anmeldeinformationen, die URL des Admin-Portals und die zu löschende Webseite:

function remove-SPOWeb ($web){

# Verwendet die zu entfernenden Variablen als Ausgangspunkt

$context = New-Object Microsoft.SharePoint.Client.ClientContext($web)   

$context.Credentials = $SPOCredentials

$web = $context.Web

$context.Load($web)

$context.Load($web.Webs)

# Sendet die Anfrage, die alle Aufgaben enthält an den Server

try{

  $context.executeQuery()

#Entfernt alle Unterseiten, so vorhanden

  if ($web.Webs.Count -ne 0){

   foreach ($subweb in $web.Webs){

    remove-SPOWeb($subweb.url)

   }

  }

Write-Host "Info: Seite $($web.url) wird entfernt" -foregroundcolor green

  $web.DeleteObject()

  $Context.ExecuteQuery()

}

catch{

  write-host "Error: $($_.Exception.Message)" -foregroundcolor green

}

}

function remove-SPOWebs{

# Sie müssen diese Variable setzen, bevor Sie das Skript starten

$userName = "[email protected]"

$adminUrl = "https://TenantName-admin.sharepoint.com"

# Lassen Sie den Nutzer hier die URL der Seite eintragen, die entfernt werden soll

$toBeDeleted = Read-Host "Bitte hier volle URL einfügen (z.B. https://TenantName.sharepoint.com/sites/rootsite/subsite"

# Der Nutzer muss hier sein Passwort ins PowerShell-Fenster eingeben.

$password = Read-Host "Bitte fügen Sie hier das Passwort für $($userName)ein." -AsSecureString

# Geben Sie SharePoint-Online- und Microsoft-365-Anmeldeinformationen ein.

$SPOCredentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($userName, $password)

$credentials = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $userName, $password

#Verbinden Sie sich mit Microsoft 365

try{

Connect-SPOService -Url $adminUrl -Credential $credentials

write-host "Info: Erfolgreich mit 365 verbunden" -foregroundcolor green

}

catch{

write-host "Error: $($_.Exception.Message)" -foregroundcolor red

Break delete-SPOSites

}

#Überprüft, ob die Webseite in SharePoint Online existiert.

$siteExists = get-sposite | where{$_.url -eq $toBeDeleted}

#Entfernt die Seite, wenn sie keine Seitensammlung ist.

if ($siteExists -eq $null) {

remove-SPOWeb($toBeDeleted)

}

else {

Remove-SPOSite -Identity $siteExists -NoWait -confirm$false

write-host "Info: Die Seitensammlung $($toBeDeleted) wurde entfernt" -foregroundcolor green

}

}

remove-SPOWebs

Reporting in Microsoft 365 mit PowerShell umsetzen

Ein weiterer Bereich, in dem das Microsoft Admin Center hinter PowerShell zurücksteht, sind Berichte.

Der Bereich des Portals für Reports ist auf Produktivitäts- und Nutzungsdaten beschränkt. PowerShell-Befehle für Exchange Online, insbesondere die Befehle im Exchange Online PowerShell V2-Modul von Microsoft, führen Massenaufgaben und -aktivitäten schnell aus, selbst wenn Sie mit Tausenden von Postfächern arbeiten.

Wenn Sie sich E-Mail-Statistiken Ihrer Benutzer im Admin Center anzeigen lassen, bekommen Sie eine lange Liste, die Sie nicht filtern können. Sie müssen die Ergebnisse in eine CSV-Datei exportieren und dann Microsoft Excel oder ein anderes Tabellenkalkulationsprogramm verwenden, um mit den Informationen weiterzuarbeiten.

Ein PowerShell-Skript kann die gleichen Daten mit dem folgenden Befehl und den gewünschten Filtern abrufen:

Get-MailTrafficTopReport
   [-Action <MultiValuedProperty>]
   [-AggregateBy <String>]
   [-Direction <MultiValuedProperty>]
   [-Domain <MultiValuedProperty>]
   [-EndDate <DateTime>]
   [-EventType <MultiValuedProperty>]
   [-Page <Int32>]
   [-PageSize <Int32>]
   [-ProbeTag <String>]
   [-StartDate <DateTime>]
   [-SummarizeBy <MultiValuedProperty>]
   [<CommonParameters>]

Das folgende Beispiel gibt einen Bericht mit E-Mail-Statistiken für einen bestimmten Datumsbereich zurück:

Get-MailTrafficTopReport -StartDate 08/04/2021 -EndDate 08/05/2021

Ein weiteres Beispiel: Wenn ein großes Unternehmen seinen Domänennamen ändert, muss es die primäre SMTP-Adresse aller seiner Benutzer aktualisieren. Das Exchange-Administrations-Webportal bietet die Möglichkeit, diese Konfigurationen für jeden einzelnen Benutzer zu ändern, aber das Bearbeiten von Hunderten oder Tausenden von Konten auf diese Weise wäre langsam und mühsam. Mit einem PowerShell-Skript ließe sich diese Aufgabe mit minimalem Aufwand und schneller erledigen.

Manchmal geht es nur mit PowerShell

Das Microsoft 365 Admin Center ist ein praktisches Tool für viele kleinere, akute Aufgaben in den Bereichen Sicherheit, Compliance und Dienstkonfiguration. Grafische Benutzeroberflächen (GUI, Graphic User Interface) eignen sich jedoch nicht für alle Fälle und Leistungsprobleme im Portal machen es schwierig, die Arbeit in einem sinnvollen Zeitrahmen zu erledigen.

Wenn Sie mehrere komplexe Schritte aneinanderreihen möchten, oder wenn die Änderungen eine große Anzahl von Benutzern betreffen, ist PowerShell der bessere Weg, um diese Aufgaben durchzuführen. Einige Funktionen lassen sich nur über PowerShell anpassen, weshalb sich jeder Microsoft-Admin mit der Funktionsweise dieses Tools vertraut machen sollte.

Erfahren Sie mehr über Desktop-Management