Skip to the main content.

ScriptRunner Blog

OneDriveSpeicher auslesen – rechtzeitig handeln

Inhaltsverzeichnis

 

 

Post Featured Image

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

 

1_SharePoint Admin Center

Ü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:

2_information-Variable output

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: 

 

 

Good2know

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.

good2know-scriptrunner-target-m365

Über den Button "Activate Service" lässt sich ein M365 Account anlegen u.a. für SharePoint online.

good2know-scriptrunner-activate-service

Im letzten Fenster können jetzt die SharePoint URL sowie die passenden Credentials definiert werden.

good2know-scriptrunner-credentials

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

Zusammenhängende Posts

5 min read

Microsoft Exchange mit PowerShell managen

2 min read

VMUG Webcast: VMware Management meistern mit PowerCLI

Über den Autor: