Mehr Infos aus Microsoft 365 Lizenzen auslesen

Dieser Artikel zeigt euch, wie man mehr Infos aus Microsoft 365 Lizenzen auslesen kann. Also wie kann ich herausfinden, ob es sich bei der Lizenz um eine Trial handelt und wann diese ausläuft.

Die Lizenzierung in Microsoft 365 ist essentiell, weil damit der Nutzen und die Funktionen für die Benutzer festgelegt werden. Wie man Lizenzen einfach zuweisen kann, habe ich euch in einem vorherigen Beitrag schon beschrieben.

Aus dem Microsoft 365 Admin Center erhält man leider nur eine sehr rudimentäre Ansicht, die uns nicht gerade viele Informationen anbietet. Man sieht nur, wie viele und an wen die Lizenzen zugewiesen sind.

Infos aus Microsoft 365 Lizenzen auslesen
Lizenzübersicht im Microsoft 365 Admin Center

Der Screenshot stammt aus einem Demo Tenant von Microsoft, der ausschließlich aus Trial Lizenzen besteht. Aufgrund der Übersicht im Admin Center ist das allerdings nicht ersichtlich. Gerne werden z.B. bei Migrationen für die Zeit der Umstellung Trial Lizenzen genutzt, um die Kosten möglichst gering zu halten.

Aber zum Glück gibt es noch PowerShell, um mehr Infos aus Microsoft 365 Lizenzen auslesen zu können. Dafür benötigen wir das Microsoft Azure Active Directory Modul für Windows PowerShell. Diese Cmdlets enthalten im Namen immer MSol. Sollte man das Modul noch nicht installiert haben, kann es ganz einfach mit dem Befehl Install-Module MSOnline installiert werden.

Das Skript sieht dann in rudimentärer Form so aus:

Connect-MsolService

$subscriptions = Get-MsolSubscription

foreach ($subscription in $subscriptions) {

    $subscriptionSKUName = $subscription.SKUPartNumber
    $subscribedOn = $subscription.DateCreated
    $expiryDate = $subscription.NextLifeCycleDate
    $status = $subscription.Status
    $totalLicenses = $subscription.TotalLicenses

    #Convert Subscribed date to friendly subscribed date
    $subscribedDate = (New-TimeSpan -Start $subscribedOn -End (Get-Date)).Days
    if ($subscribedDate -eq 0) {
        $subscribedDate = "Today"
    }
    else {
        $subscribedDate = "$subscribedDate days ago"
    }
    $subscribedDate = "(" + $subscribedDate + ")"
    $subscribedDate = "$subscribedOn $subscribedDate"

    #Determine subscription type
    If ($subscription.IsTrial -eq $False) {
        if (($subscriptionSKUName -like "*Free*") -or ($null -eq $expiryDate)) {
            $subscriptionType = "Free"
        }
        else {
            $subscriptionType = "Purchased"
        }
    }
    else {
        $subscriptionType = "Trial"
    }

    #Friendly Expiry Date
    if ($null -ne $expiryDate) {
        $friendlyExpiryDate = (New-TimeSpan -Start (Get-Date) -End $expiryDate).Days
        if ($status -eq "Enabled") {
            $friendlyExpiryDate = "Will expire in $friendlyExpiryDate days"
        }
        elseif ($status -eq "Warning") {
            $friendlyExpiryDate = "Expired.Will suspend in $friendlyExpiryDate days"
        }
        elseif ($status -eq "Suspended") {
            $friendlyExpiryDate = "Expired.Will delete in $friendlyExpiryDate days"
        }
        elseif ($status -eq "LockedOut") {
            $friendlyExpiryDate = "Subscription is locked.Please contact Microsoft"
        }
    }
    else {
        $expiryDate = "-"
        $friendlyExpiryDate = "Never Expires"
    }
    Write-Host "SubscriptionSKUNumber:" $subscriptionSKUName "Expire Date:" $friendlyExpiryDate "($expiryDate)" `
        "Subscription Type:"$subscriptionType "Total licenses:" $totalLicenses
}

Das Skript ist eigentlich recht einfach. Wir iterieren durch alle vorhandenen Lizenzen in Microsoft 365 und bereiten die Daten ein bisschen auf.

In den Zeilen 14 bis 22 verarbeiten wir das Datum, wann die Lizenz in den Microsoft 365 Tenant eingebucht wurde. Das macht es ein bisschen einfacher, wenn man gerade eine neue Lizenz eingebucht hat.

In den Zeilen 25 bis 35 bereiten wir den Typ der Lizenz auf. Es gibt generell drei unterschiedlichen Arten:

  • Free: Kostenlose Lizenzen wie z.B. die Microsoft Power Automate Free Lizenz
  • Purchased: Lizenzen für die man was zahlen muss, also der eigentliche Normalfall
  • Trial: Testlizenzen die kostenlos sind, aber nur eine begrenzte Laufzeit besitzen

In den Zeilen 38 bis 56 wird dann das Ablaufdatum der Lizenz je nach deren Status verarbeitet.

Die Ausgabe (ich gebe zu, das geht auch schöner 😁) sieht dann für unseren Demo Tenant so aus:

Infos aus Microsoft 365 Lizenzen auslesen
Ausgabe der Lizenzinformationen

Jetzt sehen wir auch plötzlich, dass es sich dabei um Trial Lizenzen handelt, die in 40 Tagen ablaufen werden. Was bei der Ausgabe noch auffällt, ist der etwas kryptische Namen bei der sog. SKUPartNumber. Man kann sich zwar denken, was mit z.B. FLOW_FREE gemeint ist, aber eine genaue Übersicht bzw. Mapping zwischen SKUPartNumber und Produktnamen findet man bei Microsoft.

Damit könnt ihr ganz einfach mehr Infos aus Microsoft 365 Lizenzen auslesen und habt immer einen Überblick, ob es Handlungsbedarf gibt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert