OneDriveSpeicher auslesen – rechtzeitig handeln
Inhaltsverzeichnis

Sie arbeiten in der IT-Administration und verwalten OneDrive-Konten? In dem Thema steckt viel Arbeit! Gerade bei wachsenden und großen Unternehmen lohnt sich der Blick, wie Automatisierung und Monitoring auch in diesem Bereich Abhilfe schaffen. Außerdem: Wer will langweilige Routine-Tasks manuell über grafische Oberflächen durchklicken?
Viel zu oft nimmt dieses "Tagesgeschäft" zu viel Zeit ein. Verstehen Sie mich nicht falsch: der Standardbetrieb sollte als Prio 1 angesehen werden. Aber gerade deswegen ist es wichtig, sich mit Hilfe kluger Skripte das Leben zu erleichtern. Viele administrative Tasks lassen sich automatisieren, was neben der sinkenden Fehlerquote bei den Aufgaben (Fehler bei manuellen Aufgaben sind nun mal menschlich) auch den Vorteil einer besseren Zeiteinteilung mit sich bringt.
Die Speicherbelegung eines Users auslesen mit PowerShell
Ein Task, welcher unter diese Routine-Arbeiten fällt, ist die Administration von M365. Nachdem immer mehr Unternehmen in den letzten Jahren auf das Thema OneDrive aufgesprungen sind und die Intensität der Nutzung weiter steigt, stößt die limitierte Speicherkapazität manche User an ihre Grenzen. Fehlt hier nun eine zentrale Überwachung, laufen Sie Gefahr, in einen Modus der reinen "Reaktion auf Probleme" zu verfallen, müssen Feuer löschen und können seltener die Herausforderung proaktiv angehen.
Es werden vermehrt Tickets mit den Titeln "OneDrive funktioniert nicht mehr" oder "Laufwerk kaputt" aufschlagen, woraufhin man über die Admin-Oberfläche sämtliche OneDrive-Laufwerke von Mitarbeiten einsieht und merkt, dass diese lediglich vollgelaufen sind. Ein unnötiger Task, der mit einer Überwachung verhindert werden kann.
Mit nur wenigen Code-Zeilen haben Sie die Möglichkeit, hier präventiv in den Prozess einzugreifen – lassen Sie sich informieren, sobald ein Konto vollläuft, wenn der Speicherverbrauch schlagartig stark ansteigt, oder messen Sie, wie sich der Speicherverbrauch über die Monate und Jahre verändert. Der blinde Fleck, was die Nutzung der Online-Speichers angeht, verschwindet!
Was will ich hier konkret zeigen?
Eine einfache Möglichkeit mit PowerShell den Speicher eines Nutzers auf dessen Nutzung zu prüfen.
Welche Voraussetzung muss erfüllt sein?
Sie benötigen lediglich das SharePoint-Modul für PowerShell und Zugriff auf das SharePoint Admin Portal. Wie Sie das genannte Modul installieren, zeige ich gleich. Über das Portal finden Sie außerdem Ihre Admin-URL heraus, falls noch nicht bekannt. Diese entspricht der Domain des Admin-Centers und wird für den Login-Prozess aus der PowerShell benötigt. In meinem Fall lautet diese: "learningitdotio-admin.sharepoint.com".
Über diese URL können wir uns mittels PowerShell anmelden:
# ModuleCheck: Installs PSTeams if not available
if(-not (Get-Module -ListAvailable Microsoft.Online.SharePoint.PowerShell)) {
Install-Module -Name Microsoft.Online.SharePoint.PowerShell -Force
}
else {
Write-Verbose "Microsoft.Online.SharePoint.PowerShell is already installed."
}
# Defining Admin URL
$adminurl = "https://learningitdotio-admin.sharepoint.com"
# Connect to SharePoint-Site
Connect-SPOService -Url $adminURL
Wenn wir nun erfolgreich mit SharePoint verbunden sind, stellt sich die Frage, wie wir an die OneDrive-Informationen der Benutzer kommen. Über das Verändern der URL kommen wir an entsprechende Informationen heran. Geben Sie dazu lediglich den Nutzer in der URL (im richtigen Format) mit an, wofür Sie die Mailadresse benötigen. An die bekannte Admin-URL hängen Sie den String "/Personal/" und fügen die Mail Adresse am Ende hinzu, wobei alle verwendeten Satzzeichen durch einen Unterstrich ersetzt werden. Aus "tterraform@learningitdotio.onmicrosoft.com" ergibt sich also folgende URL:
[https://learningitdotio-my.sharepoint.com/personal/tterraform_learningitdotio_onmicrosoft_com]
Sofern nun alle notwendigen Mails bzw. UPNs (user principal name) vorliegen, können Sie diese URL innerhalb einer Schleife erstellen und anschließend auf die URLs zugreifen. Für den Zugriff verwenden wir das cmdlet "Get-SPOSite" und geben die URL als "Identity" an. Über einen Pipe-Select kann man die Daten vorab filtern. Die Abfrage sieht dann wie folgt aus:
$user = 'https://learningitdotio-my.sharepoint.com/personal/tterraform_learningitdotio_onmicrosoft_com'
$information = Get-SPOSite -Identity $user |
Select-Object Owner, StorageUsageCurrent, StorageQuota, Status
Wenn die Authentifizierung im Schritt zuvor erfolgreich war, sollten Sie bei Abfrage der $information-Variable einen Output wie diesen erhalten:
Wir erhalten Informationen über den Owner, den Status der Site, und wissen, wie groß diese ist bzw. wieviel ihrer Kapazität belegt ist.
Da wir nun noch wissen möchten, wieviel Prozent des Speichers belegt bzw. frei ist, und die Daten in GB angegeben werden sollen, fügen wir noch verschiedene arithmetische Berechnungen hinzu:
# ModuleCheck: Installs PSTeams if not available
if(-not (Get-Module -ListAvailable Microsoft.Online.SharePoint.PowerShell)) {
Install-Module -Name Microsoft.Online.SharePoint.PowerShell -Force
}
else {
Write-Verbose "Microsoft.Online.SharePoint.PowerShell is already installed."
}
# Defining Admin URL
$adminurl = "https://learningitdotio-admin.sharepoint.com"
# Connect to SharePoint-Site
Connect-SPOService -Url $adminURL
$user = 'https://learningitdotio-my.sharepoint.com/personal/tterraform_learningitdotio_onmicrosoft_com'
# Get Information
$information = Get-SPOSite -Identity $user |
Select-Object Owner, StorageUsageCurrent, StorageQuota, Status
# Calculating
$UsedGB = $information.StorageUsageCurrent / 1024
$TotalGB = $information.StorageQuota / 1024
$UsedPer = $UsedGB / $TotalGB * 100
Fazit
Sie haben nun ein Template, mit dem Sie Ihre OneDrive- und SharePoint-Umgebung überwachen können. Auf diese Weise merken Sie rechtzeitig, dass der Speicher vollläuft – noch bevor das Limit erreicht ist, bevor es zu Ausfällen kommt und bevor die jeweiligen Nutzer:innen beginnen, Tickets zu schreiben.
Ein weiterer Schritt, der sich anbietet, ist das Verknüpfen dieser Abfrage mit Teams-Webhooks. Mit Webhooks können Sie sich mittels PowerShell Teams-Nachrichten schicken lassen, sobald ein Ereignis (wie das Volllaufen eines OneDrive-Speichers) eintritt.
Die Artikelserie zum Thema Webhooks liegt hier:
- Teil 1 - Einführung: Teams-Webhooks per PowerShell – modernes Alerting
- Teil 2 - SendMessage2Channel: Die Elegantere Art Teams-Webhooks zu versenden
- Teil 3 - Teams Adaptive Cards: Am Beispiel von Zertifikats-Monitoring mit PowerShell
So richten Sie Ihre Targets ein
Mit der aktuellen ScriptRunner Version, der PortalEdition R4, ist es möglich, direkt ein SharePoint Target einzurichten. Hierzu wählen Sie unter dem Menüpunkt 'Targets' das M365 Target aus.
Über den Button "Activate Service" lässt sich ein M365 Account anlegen u.a. für SharePoint online.
Im letzten Fenster können jetzt die SharePoint URL sowie die passenden Credentials definiert werden.
Dies ist die einfachste Möglichkeit in ScriptRunner ein SharePoint Target anzulegen.
Sprechen Sie lieber SharePoint Online aus Ihrem Skript heraus an, so gibt es als Alternative in unseren AktionPacks eine passende Library.
Viel Spaß bei der Einrichtung und #KeepOnScripting.
Lernen Sie ScriptRunner hier kennen
Weiterführende Links
- ScriptRunner ActionPacks
- Teil 1 - Einführung: Teams-Webhooks per PowerShell – modernes Alerting
- Teil 2 - SendMessage2Channel: Die Elegantere Art Teams-Webhooks zu versenden
- Teil 3 - Teams Adaptive Cards: Am Beispiel von Zertifikats-Monitoring mit PowerShell
- ScriptRunner: Vereinbaren Sie hier einen Demo-Termin mit uns!
Zusammenhängende Posts
18 min read
ScriptRunner Ultimate Edition 6 – mit KI‑gestütztem Scripting
Aug 15, 2023 by Frank Kresse
Über den Autor:
Philip Lorenz hat bei einem großen Fashion-Unternehmen aus Deutschland gelernt und anschließend als Specialist für Datacenter und Cloud gearbeitet. Schwerpunkte hierbei waren VMware, Windows Server und Microsoft Azure. Seine Kernkompetenz liegt vor allem im Automatisieren dieser Plattformen mit der PowerShell. Aktuell befindet sich Philip im dualen Studium zum Wirtschaftsinformatiker und hat sich durch das Bereitstellen von PowerShell-Kursen, PowerShell-Coaching und Freelancing-Tätigkeiten eine Selbstständigkeit aufgebaut.
Neueste Beiträge:
- Effizientes Arbeiten mit der PowerShell-Pipeline: Ein Leitfaden für Administratoren (1)
- Lizenzen und Microsoft Graph PowerShell
- ScriptRunner Ultimate Edition 6 – mit KI‑gestütztem Scripting
- So klappt die Verbindung zu Exchange Online mit CBA (zertifikatsbasierter Authentifizierung)
- Get-View in PowerCLI – so verwaltest du deine VMware-Infrastruktur noch effizienter (Teil 3)