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 $licenseDies 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.SetUserLicensesDies 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-MemberDies 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 $AssignedLicensesDas 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 $AssignedLicensesKlappt 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
