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

[玩转系统] 使用 PowerShell 在 Microsoft 365 (Azure AD) 中分配用户许可证

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

使用 PowerShell 在 Microsoft 365 (Azure AD) 中分配用户许可证


让我们看一下如何使用 PowerShell 管理 Microsoft 365 (Azure AD) 中的用户许可证(订阅)。我们将展示如何分配或删除许可证、获取已分配许可证的统计信息以及使用 Azure 组(基于组的许可)启用自动许可证分配。

您可以在 Azure 门户上或使用 M365 管理中心管理 Microsoft 365 用户许可证。在 Azure AD 中找到用户并打开许可证部分。您可以在此处将任何可用许可证分配给用户并选择可用产品。在大型公司中,使用 PowerShell 管理 Microsoft 365 许可证更为方便。

[玩转系统] 使用 PowerShell 在 Microsoft 365 (Azure AD) 中分配用户许可证

要连接到 Microsoft 365,请使用 Azure AD PowerShell 模块:

Connect-AzureAD

您可以在Azure AD -> 许可证 -> 所有产品中找到可用许可证的列表。在我们的案例中,有 25 个 Microsoft 365 E5 开发人员许可证可用,其中 9 个是免费的。

[玩转系统] 使用 PowerShell 在 Microsoft 365 (Azure AD) 中分配用户许可证

使用 PowerShell,您可以显示有关 Azure 租户中可用和已分配许可证的信息,如下所示:

Get-AzureADSubscribedSku | Select -Property Sku*,ConsumedUnits -ExpandProperty PrepaidUnits

[玩转系统] 使用 PowerShell 在 Microsoft 365 (Azure AD) 中分配用户许可证

SkuPartNumber 是许可证(许可证计划)的名称。 已启用显示根据此计划购买的许可证数量。 ConsumedUnits 是指分配给用户的许可证数量。

为了解决许可证问题,在 PowerShell 脚本中使用其 SkuID

您可以根据许可计划使用不同的 Microsoft 产品。

在我们的示例中,此租户中唯一可用的 DEVELOPERPACK_E5 许可证计划。让我们显示可供用户使用的 Microsoft 365 服务。

$licenses = Get-AzureADSubscribedSku
$licenses[0].ServicePlans

[玩转系统] 使用 PowerShell 在 Microsoft 365 (Azure AD) 中分配用户许可证

ServicePlanName 列显示具有此许可证的用户可用的产品名称。

您可以显示有关分配给用户的许可证的信息。获取分配给用户的许可证的 SkuID,然后显示其名称:

$SkuIDs=(Get-AzureADUser -ObjectId [email protected]| Select -ExpandProperty AssignedLicenses).SkuId
Foreach ($SkuID in $SkuIDs) {
(Get-AzureADSubscribedSku | Where {$_.SkuId -eq $SkuID}).SkuPartNumber
}

[玩转系统] 使用 PowerShell 在 Microsoft 365 (Azure AD) 中分配用户许可证

让我们尝试为用户分配许可证。执行此操作之前,请确保已为用户设置位置(国家/地区)。这是强制性的,因为根据不同的国家/地区,用户可能会受到当地法律的影响(这对于 Exchange Online 尤为重要)。以 ISO alpha-2 格式设置 2 个字符的国家/地区代码。

Get-AzureADUser -ObjectId [email protected]| Select UsageLocation, AssignedLicenses

如果国家/地区未设置或者您必须更改它,请运行以下命令:

Get-AzureADUser -ObjectId [email protected] | Set-AzureADUser -UsageLocation DE

然后您可以将许可证分配给用户:

$UserUPN="[email protected]"
$LicPlan="DEVELOPERPACK_E5"
$License = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$License.SkuId = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $LicPlan -eq).SkuID
$assignlic = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$assignlic.AddLicenses = $License
Set-AzureADUserLicense -ObjectId $UserUPN -AssignedLicenses $assignlic
Get-AzureADUserLicenseDetail -objectid $UserUPN

您可以一次将许可证分配给多个用户。例如,让我们为 DE 区域的所有用户分配许可证:

$LicPlan="DEVELOPERPACK_E5"
$License = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$License.SkuId = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $LicPlan -eq).SkuID
Get-AzureADUser -Filter "UsageLocation eq 'DE'”| Set-AzureADUserLicense -AssignedLicenses $assignlic

要删除许可证,请使用以下 PowerShell 脚本:

$userUPN="[email protected]"
$LicPlan="DEVELOPERPACK_E5"
$license = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$License.RemoveLicenses = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $LicPlan -EQ).SkuID
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $license

要显示未经许可的用户列表,请运行以下命令:

Get-AzureAdUser | ForEach{ $licensed=$False ; For ($i=0; $i -le ($_.AssignedLicenses | Measure).Count ; $i++) { If( [string]::IsNullOrEmpty( $_.AssignedLicenses[$i].SkuId ) -ne $True) { $licensed=$true } } ; If( $licensed -eq $false) { Write-Host $_.UserPrincipalName} }

以下 PowerShell 脚本允许将有关 Azure 用户和分配给他们的许可证的信息导出到 CSV 文件中。如果未向用户分配许可证,则会在报告中为其指定“未获得许可”。

$Report = @()
$users= Get-AzureAdUser
Foreach ($user in  $users)  {
$SkuIDs= @()
$SkuIDs=(Get-AzureADUser -ObjectId $user.UserPrincipalName| Select -ExpandProperty AssignedLicenses).SkuId
If ($SkuIDs -ne $null) {
Foreach ($SkuID in $SkuIDs) {
$License=(Get-AzureADSubscribedSku | Where {$_.SkuId -eq $SkuID}).SkuPartNumber
$objReport = [PSCustomObject]@{
UPN = $user.UserPrincipalName
DisplayName = $user.DisplayName
Department = $user.Department
License = $License
}
$Report += $objReport
}
}
Else
{
$objReport = [PSCustomObject]@{
UPN = $user.UserPrincipalName
DisplayName = $user.DisplayName
Department = $user.Department
License = "Not licensed"
}
$Report += $objReport
}
}
$Report|Export-Csv c:\ps\aad_user_licenses.csv -Encoding UTF8 -NoTypeInformation

[玩转系统] 使用 PowerShell 在 Microsoft 365 (Azure AD) 中分配用户许可证

单独管理用户许可证既困难又耗时。在 Azure AD 中,可以将许可证绑定到 Azure 组(基于组的许可)。将用户添加到组后,Azure 会自动为其分配许可证。但是,您需要 Azure AD Premium P1 订阅才能使用此功能。此外,Azure AD 模块不允许将许可证分配给组。组许可功能可在 Azure 门户上或通过 Microsoft Graph API 获得。

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

取消回复欢迎 发表评论:

关灯