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

[玩转系统] 图许可管理

作者:精品下载站 日期:2024-12-14 08:13:40 浏览:17 分类:玩电脑

图许可管理


[玩转系统] 图许可管理

Microsoft Graph SDK PowerShell 模块正在替换其他两个模块。详细了解如何连接到 Graph、查找许可证、进行更改和删除许可证。

AzureAD 和 MSOnline PowerShell 模块已经存在很长时间了,可用于管理 Microsoft 365 租户中的用户、组、许可证等。所有这一切都在改变。我们已经超过了微软规定的 2023 年 6 月结束这两个 PowerShell 模块并完全弃用它们的最后期限。他们的替代者? Microsoft Graph SDK PowerShell 模块。在此处阅读有关从 AzureAD 升级到 Microsoft Graph 的信息。本文主要讨论许可证和图表。

连接到图表

权限

首先,我们需要连接到 Microsoft Graph API,为此,我们需要获得正确的权限来进行这些更改。 Graph 具有一组复杂的权限,允许对租户中的安全和安全资产采用精细的方法。我们可以使用此 PowerShell cmdlet 获取权限列表,而无需先连接到 Graph:

Find-MgGraphPermission -PermissionType Any

[玩转系统] 图许可管理

权限列表被截断

虽然这提供了一个很好的权限列表,但不足以揭示管理租户许可证所需的权限。我们在哪里可以找到这些?经过一些研究,我们可以找到有关某些操作所需的 Graph API 权限的文档:Microsoft |学习。

搜索该页面,我们发现有关许可的引用:

[玩转系统] 图许可管理

在 Microsoft Graph PowerShell 中管理许可所需的权限

这很重要,因为当我们连接到 Graph 时,我们需要一定的权限范围,以允许 PowerShell 以正确的权限操作对象。

连接字符串

用于连接到 Microsoft Graph 的 cmdlet 是 Connect-Graph 或 Connect-MgGraph。为什么呢?一个是别名,另一个是实际的 cmdlet:

[玩转系统] 图许可管理

连接 PowerShell cmdlet 的选择

让我们使用Connect-Graph。除了权限之外,我们还有其他几个连接选项。

  • TenandID:指定租户的 GUID,以便 PowerShell 连接到目标租户的 Graph 连接点。
  • UseDeviceAuthentication:使用设备代码身份验证而不是浏览器控件”(可选)。
  • 范围:指定连接期间使用的权限,在我们的例子中为“Directory.ReadWRite.All”。
Connect-Graph -Scopes 'Directory.ReadWRite.All' -TenantID <your tenant's GUID>

如果这是您第一次连接尝试,系统可能会提示您输入登录帐户和/或需要授予权限。

提醒:请记住关闭与 Graph 的连接,以免耗尽 Microsoft 365 中资源的活动连接(通常为三个)。

[玩转系统] 图许可管理

还有两个 Disconnect PowerShell cmdlet

寻找许可证

我们可以通过首先运行此 cmdlet 来获取可用许可证的列表,以提供可用计划的列表:

Get-MgSubscribedSku | fl

[玩转系统] 图许可管理

租户中的可用 SKU

然后运行此 cmdlet,我们会获得可供用户启用/禁用的各个许可功能的列表:

(Get-MgSubscribedSku -SubscribedSkuId 5d0cc54e-0082-4eb8-a300-ce17a036f3f4_6fd2c87f-b296-42f0-b197-1e91e994b900).ServicePlans

[玩转系统] 图许可管理

功能列表被截断

从这里我们可以继续。现在我们可以查找 ServicePlanId 以进行许可证管理。

做出改变

许可概念

在向用户或组分配许可证之前,我们需要介绍一些概念。 Microsoft 有很多许可证类型和分组(例如 E3/E5),我们可以使用它们作为分配的基础。然而,有时组织可能不想分配所有这些许可证,因为他们没有培训用户、没有其他解决方案或者对其许可计划中包含的功能没有普遍兴趣。

  • 基于组的许可:通过在该组上设置许可分配,将许可证分配给属于特定组的成员的用户。
  • 总体 SKU:此 SKU 涵盖 E3 或 E5 等更高级别的许可证组,并由 Microsoft 365 中提供的一组功能组成。
  • 单个 SKU:一个 SKU 仅适用于一项功能,称为“ServicePlanId”属性。
  • 已禁用的 SKU:用户无法直接分配或通过基于组的许可分配的功能列表。

服务计划

这些是 Office 365/Microsoft 365 E1、E3 和 E5 许可证组。以下是我们稍后需要的 SKU ID。

  • Office 365 E1:18181a46-0d4e-45cd-891e-60aabd171b4e
  • Office 365 E3:6fd2c87f-b296-42f0-b197-1e91e994b900
  • Office 365 E5:c7df2760-2c81-4ef7-b578-5b5392b571df
  • Microsoft 365 E3:05e9a617-0261-4cee-bb44-138d3ef5d965
  • Microsoft 365 E5:06ebc4ee-1bb5-47dd-8120-11324bc54e06

来源:https://learn.microsoft.com/en-us/azure/active-directory/enterprise-users/licensing-service-plan-reference

个人许可证

我们首先可以开始的是个人许可证,因为这些通常是组织在入职流程或分配给用户的新角色时可能需要执行的一次性许可证。像这样的任务不需要太多的规划,因为它们会影响单个用户,并且可以使用 PowerShell 轻松完成。在以下两个示例中,我们分别从包含用户标识信息的 CSV 文件列表中向用户应用许可证。

实施例1

我们有一些用户只需要访问大多数功能,但我们需要禁用 Flow、PowerApps、Viva Engage(以前称为 Yammer)和 Bookings。 Lester 和 Nancy 是不需要这些功能的实习生,我们可以像这样更改他们的许可:

$YammerID = '7547a3fe-08ee-4ccb-b430-5077c5041653'
$FlowID = '07699545-9485-468e-95b6-2fca3738be01'
$PowerAppsID = '9c0dab89-a30c-4117-86e7-97bda240acd2'
$BookingsID = '199a5c09-e0ca-4e37-8f7c-b05d533e1ea2'
$DisabledPlans = @( $YammerID, $FlowID, $PowerAppsID, $BookingsID )$SKU = 'c7df2760-2c81-4ef7-b578-5b5392b571df'
Set-MgUserLicense -UserID [email protected] -AddLicenses @{SkuId = $SKU ; DisabledPlans = $DisabledPlans} -RemoveLicenses @()
Set-MgUserLicense -UserID [email protected] -AddLicenses @{SkuId = $SKU ; DisabledPlans = $DisabledPlans} -RemoveLicenses @()

现在,Lester 和 Nancy 在他们的 E5 计划中在线拥有三个禁用许可证。

实施例2

我们在 CSV 中列出的一组用户需要分配完整的 E5 许可证,因为他们需要 E5 提供的额外功能。与前面使用 Set-MgUserLicense 的示例类似,我们将使用 Foreach 循环来处理每个用户并为 Office 365 E5 分配 SKU。

$SKU = 'c7df2760-2c81-4ef7-b578-5b5392b571df'
$CSV = Import-CSV 'E5-USerList.csv'
Foreach ($Line in $CSV)
Set-MgUserLicense -UserID $_.UPN -AddLicenses @{SkuId = $SKU} -RemoveLicenses @()
}

根据用户数量,这可能需要一些时间来处理。对于此类重大更改,更好的方法是使用基于组的许可,我们将在接下来介绍:

团体许可证

除了为每个用户单独分配许可证之外,我们还可以选择通过 Entra ID(以前称为 Azure AD)组批量分配许可证,也称为基于组的许可。简而言之,使用组来分配许可证,我们可以通过将用户添加到具有与其关联的许可证分配的组,以更简单的方式将用户从一个许可证转换到另一个许可证。当用户不再需要许可证时,可以将他们从同一组中删除,然后删除许可证。

例子

在这种情况下,IT 正在慢慢推出所购买的 Office E3 许可证中包含的各种功能。一个 IT 项目正在进行中,Teams、Viva Engage(以前称为 Yammer)和 Sway 在接受培训的员工中分批部署。因此,他们希望首先阻止所有人使用这三个功能,然后在各组接受培训并且内部 IT 传达对这些产品/推出客户端(例如团队)的访问权限时进行分配。使用产品的先前 ServicePlanId,我们可以创建一个组来使用禁用计划的概念进行阻止。在下面的 PowerShell 中,我们将要阻止的三种产品放在一起,并将它们组装在一个数组中:

$TeamsID = '57ff2da0-773e-42df-b2af-ffb7a2317929'
$YammerID = '7547a3fe-08ee-4ccb-b430-5077c5041653'
$SwayID = 'a23b959c-7ce8-4e57-9140-b90eb88a9e97'
$DisabledPlans = @( $TeamsID, $YammerID, $SwayID )

接下来,我们创建了两个组,我们将向其分配许可证,并且我们可以通过 PowerShell 收集有关这些组的信息:

Get-MgGroup | Where DisplayName -like 'M365*'

返回这个:

Id                         DisplayName--                        -----------06170e2a-8017-45f9-a0a5-27cb4a8781ce        M365E3-PostTraining64a84c9f-eb10-422c-9333-c58bd5b45419        M365E3-PreTraining

我们需要使用 Id 属性将许可证分配给这两个组。对于预训练组,我们需要上面的 $DisabledPlans、组的 ID 值和 Office 365 E3 SKU,并在 Set-MgGroupLicense cmdlet 中提供它们,如图所示这里:

$GroupID = (Get-MgGroup | Where DisplayName -eq 'M365E3-PreTraining').Id
$SKU = 'c7df2760-2c81-4ef7-b578-5b5392b571df'
Set-MgGroupLicense -GroupID $GroupID -AddLicenses @{SkuId = $SKU ; DisabledPlans = $DisabledPlans} -RemoveLicenses @()

现在,对于培训后组,我们只需要 Office 365 E3 SKU 和同一 cmdlet 的组 ID,如下所示:

$GroupID = (Get-MgGroup | Where DisplayName -eq 'M365E3-PostTraining').Id$SKU = 'c7df2760-2c81-4ef7-b578-5b5392b571df'Set-MgGroupLicense -GroupID $GroupID -AddLicenses @{SkuId = $SKU} -RemoveLicenses @()

如果我们查看 Microsoft 365 管理中心,我们可以看到差异:

[玩转系统] 图许可管理

PowerShell 脚本前后的许可证更改

另外,我们可以确认 PowerShell 中的差异:

Get-MgUserLicenseDetail -UserId [email protected] | select -ExpandProperty ServicePlans | where ProvisioningStatus -eq Disabled

[玩转系统] 图许可管理

禁用 Frank 帐户上的许可功能

Get-MgUserLicenseDetail -UserId [email protected] | select -ExpandProperty ServicePlans | where ProvisioningStatus -eq Disabled

这将返回一个空结果,这意味着没有任何结果被禁用。要获取所有活动服务的总数,我们可以运行这两个 cmdlet:

(Get-MgUserLicenseDetail -UserId [email protected] | select -ExpandProperty ServicePlans | where ProvisioningStatus -ne Disabled).Count(Get-MgUserLicenseDetail -UserId [email protected] | select -ExpandProperty ServicePlans | where ProvisioningStatus -ne Disabled).Count

[玩转系统] 图许可管理

三者之差,如预期

离职或吊销执照

根据许可证的应用方式,删除许可证可能就像从特定组中删除用户一样简单,也可能需要删除所有分配的许可。这两项任务都可以使用 PowerShell 完成,并且与单独的任务相反。

$SKU = 'c7df2760-2c81-4ef7-b578-5b5392b571df'
Set-MgUserLicense -UserID [email protected] -AddLicenses @() -RemoveLicenses @($SKU)

[玩转系统] 图许可管理

Lester 的 E5 许可证现已取消选中

如果许可证是由组分配的,我们只需将该用户从组成员身份中删除即可。

结论

管理许可证的新方法类似于旧的 Entra ID (Azure AD) 方法。唯一的额外层是知道当用户在 Graph PowerShell 中执行任务时要向他们分配哪些权限。否则,整个过程是相同的。确保您开始学习 Graph PowerShell,因为随着时间的推移,它将取代许多其他 PowerShell 模块。

快速说明:如果需要有关谁拥有哪些许可证的报告,也可以使用 PowerShell 来完成,如下所示:

Get-MgUser -Filter "assignedLicenses/any(x:x/skuId eq $SKU)" -All

[玩转系统] 图许可管理

已分配 E5 许可证的用户列表

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

取消回复欢迎 发表评论:

关灯