当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 AzureAD V2 PowerShell 模块管理许可证

作者:精品下载站 日期:2024-12-14 07:15:00 浏览:15 分类:玩电脑

使用 AzureAD V2 PowerShell 模块管理许可证


11 月 17 日,新版本的 AzureAD PowerShell 模块发布到库中。可以在这里找到:https://www.powershellgallery.com/packages/AzureAD/2.0.0.30

在旧的 MSOnline 模块中,有两个命令用于更改分配给用户的许可证。首先,我们将带有参数 ObjectID 或 UserPrincipalName 的 Set-MsolUserLicense 与 AddLicenses、RemoveLicenses 和 LicenseOptions 结合起来。其次,我们有 New-MsolLicenseOptions 它将创建一个许可证选项对象。

在新的AzureAD模块中,仍然有一个名为Set-AzureADUserLicense的命令,但它只有两个参数:ObjectId和AssignedLicenses。没有创建许可证选项的命令。

现在,对于没有经验的 PowerShell 用户来说,这可能有点令人困惑,但不用担心,我们会深入了解这一点!

我们先看一下帮助文档:

Get-Help -Name Set-AzureADUserLicense -Full

[玩转系统] 使用 AzureAD V2 PowerShell 模块管理许可证

这给了我们使用New-Object来创建AssignedLicense对象的提示。让我们尝试一下吧!

在我的测试中,我使用 Get-AzureADSubscribedSku 获取可用的许可证列表,发现 POWER_BI_STANDARD 的 SkuID 为“a403ebcc-fae0-4ca2-8c8c-7a907fd6c235”,将其替换为许可证的 SkuID。

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

这会引发一个错误,指出:

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

这告诉我们,参数AssignedLicenses期望的对象实际上不是一个AssignedLicense对象,而是一个AssignedLicenses对象。让我们创建其中一个并看看它的外观:

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

这告诉我们有两个属性:AddLicenses 和RemoveLicenses。 AddLicenses 是AssignedLicense 对象的列表,这就是我们的对象所在的位置。让我们再试一次:

$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

这似乎有效!我的用户现在拥有 PowerBI Standard 许可证。但我之前也有 PowerBI Pro 许可证,让我们看看是否可以更新代码以删除该许可证。请注意,上面的AssignedLicenses 对象上的RemoveLicenses 属性是一个字符串列表。我的 PowerBI Pro 许可证的 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

奇迹般有效!我从一开始分配的 Office 365 E1 许可证仍然在那里,根本没有受到影响。通过使用 Get-Help 和 Get-Member,我们现在已经了解了如何在新的 AzureAD PowerShell 模块中使用 Set-AzureADUserLicense,并且我们已经学到了一些知识:

  • 参数AssignedLicenses采用icrosoft.Open.AzureAD.Model.AssignedLicenses类型的对象
  • 该对象有两个属性:AddLicenses 和RemoveLicenses
  • AddLicenses 采用 Microsoft.Open.AzureAD.Model.AssignedLicense 对象的列表。
  • RemoveLicenses 获取包含 SkuId 的字符串列表
  • 不属于 AddLicenses 或 RemoveLicenses 的已分配许可证保持不变

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯