Microsoft 365 Lizenz für alle Benutzer austauschen mit der PowerShell

Wenn man Änderungen an den Lizenzen in Microsoft (Office) 365 vornimmt, erlebt man oft dass die „alten“ und die „neuen“ Lizenzen widersprüchliche Optionen enthalten. Zudem gibt es häufiger mal Probleme, wenn Lizenzen „gepoolt“ sind und gleichzeitig zu Konten hinzugefügt werden sollen. Außerdem kommt es schon mal vor, das „mal eben“ eine Lizenz für alle Benutzer zu ersetzen ist.

Da hilt es, wenn man „mal eben“ alle Microsoft 365 Lizenzen auf einmal ersetzen kann.

Die Umstellung der Lizenzen der Benutzern muss selbstverständlich so durchgeführt werden, das die Endbenutzer das nich bemerken und alle Daten erhalten bleiben.

To the rescue: Das neue Lizenz-SKU mit dem Cmdlet Get-MsolAccountSku anschauen und via Set-MsolUserLicense tauschen.

Was habe ich überhaupt für Lizenzen (SKU)?

Die SKU ist die Microsoft „Stock Keepig Unit“, also quasi der Artikel. Das „quasi“ steht hier für den Artikelumfang, wirklich gleich sind ide Artikel nie. Jeder Tenant bekommt siene „eigene“ Kopie davon. In diesem Fall „TCHERNBYL“ als Platzhalter betrachten.

„Seine“ SKUs schaut man sich am besten zuerst an.

PS C:\> Get-MsolAccountSku

AccountSkuId                 ActiveUnits WarningUnits ConsumedUnits
------------                 ----------- ------------ -------------
TCHERNBYL:FLOW_FREE             10000       0            0
TCHERNBYL:SPB                   18          0            18
TCHERNBYL:EXCHANGESTANDARD      1           0            1
TCHERNBYL:O365_BUSINESS_PREMIUM 18          0            0

Hier hat der Tentant FLOW_FREE (GUI-Name „Power Automate Free“), ein paar SPB („Microsoft 365 Business Premium“), Exchange Pa und O365_BUSINESS_PREMIUM (Meint heute „Microsoft 365 Business Standard“).

Welche SKU haben meine Benutzer?

Das lässt sich genau so schnell herausfinden, wenn man Get-MsolUser filtert:

PS C:\> Get-MsolUser -All | Where {$_.isLicensed -eq "TRUE" -and $_.Licenses.AccountSKUID -eq "TCHERNBYL:SPB"}

UserPrincipalName      DisplayName        isLicensed
-----------------      -----------        ----------

[email protected]       Wiktor Petrowytsch  True

Und wie tausche ich eine Lizenz gegen eine andere?

Im Beispiel wird „Business Premium“ durch „Business Standard“ für alle Lizenzierten Benutzer ausgetauscht:

PS C:\> Get-MsolUser -All | Where {$_.isLicensed -eq "TRUE" -and $_.Licenses.AccountSKUID -eq "TCHERNBYL:SPB"} | Set-MsolUserLicense –AddLicenses "TCHERNBYL:O365_BUSINESS_PREMIUM" –RemoveLicenses "TCHERNBYL:SPB"

Das hilt übrigens auch, wenn man im POrtal zwei vermeintlich identische Lizenzen sieht.

Welche einzelnen Microsoft 365 Pläne sind in einem Plan (=Vertrag) enthalten?

Das lässt sich mit dem ServiceStatus Property beantworten. Eine Liste für eine aktive SKU lässt sich, zum Beispiel, so ausgeben:

PS C:\> (Get-MsolAccountSku | where {$_.AccountSkuId -eq "TCHERNBYL:SPB"}).ServiceStatus

ServicePlan                                ProvisioningStatus
-----------                                ------------------
MDE_SMB                                    Success
VIVA_LEARNING_SEEDED                       Success
Nucleus                                    Success
M365_LIGHTHOUSE_PARTNER_PLAN1              Success
WINDOWSUPDATEFORBUSINESS_DEPLOYMENTSERVICE Success
UNIVERSAL_PRINT_01                         Success
M365_LIGHTHOUSE_CUSTOMER_PLAN1             Success
POWER_VIRTUAL_AGENTS_O365_P3               Success
CDS_O365_P3                                Success
PROJECT_O365_P3                            Success
DYN365_CDS_O365_P3                         Success
MFA_PREMIUM                                Success
EXCHANGE_S_FOUNDATION                      Success
ADALLOM_S_DISCOVERY                        Success
AAD_PREMIUM                                Success
KAIZALA_O365_P2                            Success
MICROSOFT_SEARCH                           Success
OFFICE_SHARED_COMPUTER_ACTIVATION          Success
WHITEBOARD_PLAN1                           Success

[...]

Microsoft 365 Fehler beim Umschalten in den Modus „Nur Teams“ „Beachten Sie die nicht gespeicherten Abschnitte, die unten rot markiert sind“

Nur Skype?

Es passiert schon mal, das externen Kontakten bei der Suche nach „internen“ Microsoft 365 Benutzern nur die Skype-Version des Kontakts angezeigt wird.

Beachten Sie die nicht gespeicherten Abschnitte, die unten rot markiert sind.

Wenn man dann mit diesem Kontakt kommuniziert, Fehlen die coolen Teams-Features, wie Emojies, Gifs, Bilder, Videokonferenz und so weiter.

Stellt man den Benutzer auf die Teams-Only-Nutzung um, bekommen die externen Kontakte auch einen Hinweis darauf:

"Aufgrund einer Änderung an einer Organisationsrichlinie können Sie nun eine funktionsreichere Chat- und Anruferfahrung genießen."

Wenn man nun seinen einen Microsoft 365 Tenant in den Modus „Nur Teams“ umstellen will, erhält man die im Titel geannnte Meldung:

Um das mittelfristig zu beheben reicht es schon, wen man die Skype-for-Business DNS-Einträge der betroffenen Domain entfernt. Alle „lyncdiscover“ und „_sip“ und ähnliche Einträge müssen weg.

Dann einmal Teams schliessen, den Teams-Cache komplett (!) löschen, /flushdns (DNS-Server nicht vergessen!) und fertig. Den Teams-Cache findet man hier:

%localappdata%\microsoft\Teams

Den ganzen Ordnerinhalt komplett löschen.

Tastenkombination, Shortcut, Hotkey für die integrierte Windows Remotehilfe (Remote Assistance)

Ein Kunde (liebe Grüße!) hat mich soeben auf diese großartige Windows 10+ Tastenkombination hingewiesen:

STRG + WIN + Q

Die Kombination öffnet sofort die Windows Remotehilfe.

Damit können Benutzer einem Admin Zugriff auf den PC gewähren, Dateien kopieren und so weiter. Wie eine kostenlose Alternative zu TeamViewer, die sowiso ins System eingebaut ist 🙂

Mehrere Bilder mit guetzli an der Bash komprimieren (Guetzli Batch compress)

Nachdem ich jetzt zum vierten mal und viel zu lange an der Guetzli-Pipe für einen Webserver herumgebastelt habe, hier nun die Notiz dazu.

Mehre Dateien mit find selektieren und via xargs in Guetzli werfen, die originaldatei überschrieben:

find -name 'IMG_????.' -print0 | xargs -0 -I{} -P0 guetzli --verbose --quality 85 {} {}.jpg

HPE iLO, Dell iDrac oder andere IPMI IP-Adressen auf VMware ESXi anzeigen (ohne hponcfg)

„ILO Adressen ohne hponcfg anzeigen“

Es gibt einen einfachen Trick, um die IP-Adressen von IPMI (OOBE-) Adaptern direkt auf der Konsole vom ESXi anzuzeigen:

esxcli hardware ipmi bmc get

Ohne umständliche Installation der OEM-Tools, ohne komische neue VIBs, einfach so 😀