Industrie und Dienstleistungen
Der ideale Digitalisierungspartner kennt sich nicht nur mit Theorie und Technik, sondern auch mit der Branche seines Kundens aus. In acht Fokusbranchen stellen wir Ihnen ausgewiesene Experten zur Seite, die mit den Prozessen, Prioritäten und Herausforderungen Ihres Fachbereichs vertraut sind.
Kontakt
Fertigungsunternehmen
Seit Langem konzentriert sich proMX darauf, Unternehmen der produzierenden Industrie bei der digitalen Transformation Dynamics 365 zu unterstützen.
proMX Services
proMX analysiert Ihre Geschäftsprozesse und stattet Ihr Unternehmen mit maßgeschneiderten Lösungen aus, um Ihre Herausforderungen zu meistern. In unserem Discovery-Workshop finden wir die passenden Werkzeuge, damit Sie in Zukunft noch produktiver arbeiten können. Legen wir los!
Interessant für Sie
Partners
Indem Sie als Partner der proMX Group die proMX 365 Productivity Suite anbieten, haben Sie die einzigartige Gelegenheit, Ihr Geschäftsportfolio zu erweitern und signifikantes Wachstum zu erzielen.
Werden Sie Partner!
Wir helfen Firmen jeglicher Größe bei der Transformation zu digitalen Unternehmen.
Über uns
proMX ist Ihr Digitalisierungs-Partner. Wir helfen Ihnen, die Prozesse Ihres Unternehmens so zu transformieren, dass Sie agiler, effizienter und wettbewerbsfähiger arbeiten können. Als Microsoft-Partner haben wir jahrelange Erfahrung und herausragende Beziehungen.
Mehr über proMX
Unsere Mission
Wir helfen Firmen jeglicher Größe bei der Transformation zu digitalen Unternehmen.
Nils Pelzer
11 Jan. 2017 | Aktualisiert am: 16 Dez. 2022
Expertenbeiträge | 4 Min. Lesezeit

Normalerweise ist das erste, was man macht, wenn man einen neuen Benutzer in Office 365 angelegt, diesem Nutzer eine Lizenz zuzuweisen. Dazu ruft man die Nutzerlizenzen-Übersicht im Office 365-Portal auf. Dort findet man alle verfügbaren Lizenzen. Aber was, wenn für ein bestimmtes Produkt keine Lizenzen mehr verfügbar sind?

assign_license

Ich wollte herausfinden, welche Benutzer diese sechs Visio-Lizenzen nutzen. Leider kann man diese Information im Office-365-Portal nur herausfinden, indem man die Lizenzübersicht eines jeden Benutzers aufruft und die Namen von Lizenznutzern händisch festhält. Scheinbar werden Lizenzinformationen nur im jeweiligen Benutzerobjekt gespeichert. Es gibt keine Übersicht, die Aufschluss gibt, welchen Benutzern eine bestimmte Lizenz zugeteilt wurde.

Deshalb entschied ich mich, zu untersuchen, was mit PowerShell möglich ist – und ich fand eine Lösung für mein Problem! Aber warum lediglich die Lizenzen eines Produkts prüfen? Ich entschied mich, ein kleines Skript zu schreiben, dass mir alle Nutzer aller Lizenzen liefert.

Um mit PowerShell eine Verbindung mit Ihrem Office-365-Mandanten herzustellen, benötigen Sie zwei Dinge:

  1. Microsoft Online Services -Anmelde-Assistant für IT Experten RTW
    https://www.microsoft.com/de-de/download/details.aspx?id=41950
  2. Azure Active Directory Module for Windows PowerShell (64-bit version)
    http://go.microsoft.com/fwlink/p/?linkid=236297

Mehr Informationen, wie Sie PowerShell in Ihrem Office-365-Mandanten nutzen können, finden Sie hier: https://msdn.microsoft.com/en-us/library/jj151815.aspx#bkmk_installmodule [Englisch]

Wenn Sie diese Tools installiert haben, können Sie sich mit Ihrem Mandanten verbinden: Connect-MsolService

Geben Sie Ihre Anmeldedaten ein. Nun können Sie Informationen über Ihre Office-365-Nutzer erhalten und diese verändern.

Zunächst wollen wir alle verfügbaren Office-365-Lizenzen in Erfahrung bringen:

$MsolAccountSkus = Get-MsolAccountSku

Und zusätzlich alle Benutzer, die Lizenzen nutzen:

$LicensedMsOnlineUsers = Get-MsolUser | Where-Object { $_.IsLicensed -eq "TRUE" }

$MsolAccountSkus ist ein Array von Objekten, die Informationen über alle verfügbaren Lizenzen enthalten, z. B. ID, wie viele Lizenzen verbraucht sind und wie viele noch verfügbar sind.

accountskuid

Die AccountSkuId ist eine Kombination aus dem Namen Ihres Mandanten und dem Namen der Lizenz.

$LicesedMsOnlineUsers ist ein Array aller Benutzerobjekte, die Office-365-Lizenzen nutzen. Die Information, welche Lizenzen genutzt werden, sind in den Licenses.AccountSkuID-Eigenschaften gespeichert. Hierbei handelt es sich um ein Array mit allen vergebenen AccountSkuIDs. Zum Beispiel:

licensedmson

$MsolAccountSkus und $LicesedMsOnlineUsers sind im Grunde das, was man in der Nutzerlizenzen-Übersicht im Office-365-Portal sieht.

Es gibt viele Möglichkeiten, mein Ziel zu erreichen. Ich entschloss mich, jede Information, die ich benötigte, zu sammeln und in einem benutzerdefinierten Objekt zu speichern. Diese Objekte werden wiederum in einem Array $O365_Licenses gespeichert.

FUNCTION O365_License_Object($AccountSkuID, $ActiveUnits, $ConsumedUnits 
, $RemainingUnits,){
    $Object = New-Object PSObject 
    $Object | add-member Noteproperty AccountSkuID $AccountSkuID                           
    $Object | add-member Noteproperty ActiveUnits $ActiveUnits
    $Object | add-member Noteproperty ConsumedUnits $ConsumedUnits
    $Object | add-member Noteproperty RemainingUnits $RemainingUnits
    $Object | add-member Noteproperty Users $Users

    return $Object
} #End O365_License_Object

Diese Funktion erstellt ein benutzerdefiniertes Objekt, das den Namen der Lizenz (AccountSkuID), wie viele Lizenzen in Ihrem Office 365-Mandanten verfügbar sind (ActiveUnits), wie viele Lizenzen bereits an Benutzer vergeben sind (ConsumedUnits), wie viele Lizenzen noch verfügbar sind (RemainingUnits) und welchem Nutzer diese Lizenz zugeteilt wurde (Users).

Ich sammle die Information für jedes Element in $MsolAccountSkus, erstelle ein neues benutzerdefiniertes Objekt und speichere es in $O365_Licenses.

$O365_Licenses = @() 

foreach($MsolAccountSku in $MsolAccountSkus){

    $AccountSkuID = $MsolAccountSku.AccountSkuID
    $ActiveUnits = $MsolAccountSku.ActiveUnits
    $ConsumedUnits = $MsolAccountSku.ConsumedUnits
    $RemainingUnits = $ActiveUnits - $ConsumedUnits

    $O365_License = O365_License_Object $AccountSkuID $ActiveUnits $ConsumedUnits $RemainingUnits
    $O365_Licenses += ,$O365_License
}

Der nächste Schritt ist herauszufinden, welche Lizenzen welchen Benutzern zugeteilt wurden. Dafür durchlaufe ich jedes Element in $O365_Licenses und prüfe, ob sich in $LicensedMsOnlineUsers Elemente befinden, die die gleiche AccountSkuID haben. Ist das der Fall, wird der UPN des Benutzers im Attribut .users des $O365_License gespeichert.

foreach($O365_License in $O365_Licenses){
    
    $Users = @()
     
    foreach($LicensedMsOnlineUser in $LicensedMsOnlineUsers){
        if($LicensedMsOnlineUser.Licenses.AccountSkuId.Contains($O365_License.AccountSkuID)){
            $Users += $LicensedMsOnlineUser.UserPrincipalName
        }
    }
    $O365_License.Users += $Users
}

Nun ist jedes Element in $O365_Licenses ein Objekt, das Informationen enthält, die ich in Erfahrung bringen wollte. Zum Beispiel:

365_licenses

Nun können Sie diese Informationen visualisieren, zum Beispiel in einer HTML-Tabelle, die einen Überblick über alle Lizenzen und alle Nutzer darstellt.

Answering