Website-Suche

Verwalten von Lizenzen mit dem AzureAD V2 PowerShell-Modul


Am 17. November wurde eine neue Version des AzureAD PowerShell-Moduls in der Galerie veröffentlicht. Dies finden Sie hier: https://www.powershellgallery.com/packages/AzureAD/2.0.0.30

Im alten MSOnline-Modul gab es zwei Befehle, mit denen einem Benutzer zugewiesene Lizenzen geändert werden konnten. Zuerst hatten wir Set-MsolUserLicense mit dem Parameter ObjectID oder UserPrincipalName, der mit AddLicenses, RemoveLicenses und LicenseOptions kombiniert werden konnte. Zweitens hatten wir New-MsolLicenseOptions, das ein Licenseoptions-Objekt erstellen würde.

Im neuen AzureAD-Modul gibt es immer noch einen Befehl namens Set-AzureADUserLicense, der jedoch nur zwei Parameter hat: ObjectId und AssignedLicenses. Es gibt keinen Befehl zum Erstellen von Lizenzoptionen.

Das kann für den unerfahrenen PowerShell-Benutzer etwas verwirrend sein, aber keine Angst, wir gehen der Sache auf den Grund!

Schauen wir uns zunächst das Hilfedokument an:

Get-Help -Name Set-AzureADUserLicense -Full

Dies gibt uns einen Hinweis, New-Object zum Erstellen eines AssignedLicense-Objekts zu verwenden. Probieren wir es aus!

In meinem Test habe ich Get-AzureADSubscribedSku verwendet, um eine Liste der für mich verfügbaren Lizenzen abzurufen, und festgestellt, dass die SkuID von POWER_BI_STANDARD „a403ebcc-fae0-4ca2-8c8c-7a907fd6c235“ lautet. Ersetzen Sie diese durch die SkuID Ihrer Lizenz.

$license = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$license
$license.SkuId = 'a403ebcc-fae0-4ca2-8c8c-7a907fd6c235'
Set-AzureADUserLicense -ObjectId [email  -AssignedLicenses $license

Dies löst einen Fehler aus, der besagt:

Set-AzureADUserLicense : Cannot bind parameter 'AssignedLicenses'. Cannot convert the "class AssignedLicense { 
    DisabledPlans: 
    SkuId: a403ebcc-fae0-4ca2-8c8c-7a907fd6c235 
} 
" value of type "Microsoft.Open.AzureAD.Model.AssignedLicense" to type "Microsoft.Open.AzureAD.Model.AssignedLicenses". 
At line:1 char:68
+ ... ureADUserLicense -ObjectId [email  -AssignedLicenses $license 
+                                                                  ~~~~~~~~ 
    + CategoryInfo          : InvalidArgument: (:) [Set-AzureADUserLicense], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.Open.AzureAD16.PowerShell.SetUserLicenses

Dies sagt uns, dass das vom Parameter AssignedLicenses erwartete Objekt eigentlich kein AssignedLicense-Objekt, sondern ein AssignedLicenses-Objekt ist. Lassen Sie uns eines davon erstellen und sehen, wie es aussieht:

New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses | Get-Member

Dies sagt uns, dass wir zwei Eigenschaften haben, AddLicenses und RemoveLicenses. AddLicenses ist eine Liste von AssignedLicense-Objekten. Hierhin geht unser Objekt. Versuchen wir es noch einmal:

$license = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$license.SkuId = 'a403ebcc-fae0-4ca2-8c8c-7a907fd6c235'
$AssignedLicenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$AssignedLicenses.AddLicenses = $license
Set-AzureADUserLicense -ObjectId [email  -AssignedLicenses $AssignedLicenses

Das scheint zu funktionieren! Mein Benutzer verfügt jetzt über eine PowerBI-Standardlizenz. Aber ich hatte schon vorher auch eine PowerBI Pro-Lizenz. Mal sehen, ob wir den Code aktualisieren können, um auch diese zu entfernen. Beachten Sie, dass die Eigenschaft RemoveLicenses für unser AssignedLicenses-Objekt oben eine Liste von Zeichenfolgen ist. Meine PowerBI Pro-Lizenz hat die SkuID „f8a1db68-be16-40ed-86d5-cb42ce701560“.

$license = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$license.SkuId = 'a403ebcc-fae0-4ca2-8c8c-7a907fd6c235'
$AssignedLicenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$AssignedLicenses.AddLicenses = $license
$AssignedLicenses.RemoveLicenses = 'f8a1db68-be16-40ed-86d5-cb42ce701560'
Set-AzureADUserLicense -ObjectId [email  -AssignedLicenses $AssignedLicenses

Klappt wunderbar! Und meine Office 365 E1-Lizenz, die von Anfang an zugewiesen wurde, ist immer noch da und wurde überhaupt nicht angetastet. Durch die Verwendung von Get-Help und Get-Member haben wir nun herausgefunden, wie Set-AzureADUserLicense im neuen AzureAD PowerShell-Modul verwendet wird, und wir haben einige Erkenntnisse gewonnen:

  • Parameter AssignedLicenses akzeptiert ein Objekt vom Typ icrosoft.Open.AzureAD.Model.AssignedLicenses
  • Dieses Objekt verfügt über zwei Eigenschaften: AddLicenses und RemoveLicenses
  • AddLicenses übernimmt eine Liste von Microsoft.Open.AzureAD.Model.AssignedLicense-Objekten.
  • RemoveLicenses benötigt eine Liste von Zeichenfolgen, die SkuIds enthalten
  • Bereits zugewiesene Lizenzen, die weder Teil von AddLicenses noch RemoveLicenses sind, bleiben unberührt

Verwandte Artikel