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

[玩转系统] 报告 Microsoft 365 租户的用户许可成本

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

报告 Microsoft 365 租户的用户许可成本


了解用户许可证成本是多少以及未分配的许可证吸收了多少

我写的有关使用 Microsoft Graph PowerShell SDK 创建租户许可报告的文章非常受欢迎。 2021 年 10 月的文章奠定了基础并解释了提取 Entra ID 用户帐户许可信息的基础知识。两年后,后续文章介绍了如何添加对基于组的许可证分配的支持。我现在想要解决一个常见请求,并添加对个人用户和租户的成本报告的支持。

很少有人喜欢重写代码。我也不例外。考虑到这一点,我决定在合并新代码以报告许可证成本时进行尽可能少的更改。除此之外,这意味着使用以前版本的脚本创建自己的许可报告的人应该会发现更新其版本更容易。至少,这是计划。

许可和订阅

作为回顾,我们来介绍一下 Microsoft 365 许可的基础知识。租户通过订阅支付许可证费用。订阅适用于 Microsoft 365 E3 等产品。有些订阅是免费的,无限制或试用期。订阅具有唯一的 SKU 标识符。 Get-MgSubscribedSku cmdlet 返回租户当前订阅的详细信息。

付费订阅的相关每月费用因国家/地区的当地税收和其他因素而异。例如,Office 365 E3 在美国的每月费用为 23 美元,在爱尔兰的每月费用为 23.10 欧元(不含 Teams)。由于其复杂性,我不会尝试在这里处理多国定价。该脚本为 SKU 的所有许可证分配相同的价格。

将成本包含在许可证订阅数据中

Get-MgSubscribedSku 告诉我们租户中存在哪些订阅。它没有告诉我们任何有关价格的信息。我使用脚本(可从 GitHub 下载)获取 Microsoft 在许可和服务计划参考页面上发布的 CSV 文件,并使用它来构建包含订阅和服务计划信息的 CSV 文件。这些数据包括订阅和服务计划的“友好名称”,以允许脚本报告这些名称而不是 GUID。通过将数据加载到哈希表中,脚本可以快速将 GUID(如 06ebc4ee-1bb5-47dd-8120-11324bc54e06)转换为产品或服务计划名称(在本例中为 Microsoft 365 E5)。

为了将成本添加到等式中,我编辑了包含 SKU 信息的 CSV 文件,以便每个产品的行都包含价格列。然后,我将为每个许可证支付的价格插入到该列中。公司可以自由地与微软协商价格,而支付的订阅费用取决于协商的成功程度。

我还插入了一个货币列,但仅为第一个产品填充此列(因为脚本在各处使用相同的货币)。图 1 显示了我的租户的 SKU 信息 CSV 文件的样子。

[玩转系统] 报告 Microsoft 365 租户的用户许可成本

为了使定价信息能够快速访问,脚本读取 CSV 文件并创建一个包含 SKU 标识符(键)和每月价格(值)的键值对的哈希表。

计算许可成本

该脚本的早期版本创建分配给用户帐户的一系列许可证(直接许可证和基于组的许可证)。计算分配给各个用户帐户的许可证的成本涉及以下问题:

  • 计算许可证的年度费用(每月费用 * 12)。
  • 添加每个许可证的年度成本即可计算总成本。

该脚本通过一个简单的 PowerShell 函数执行此操作。您可以看到所有价格均以美分计算,以适应 17.70 美元或 16.40 欧元等价格。

Function Get-LicenseCosts {
  # Function to calculate the annual costs of the licenses assigned to a user account  
  [cmdletbinding()]
      Param( [array]$Licenses )
      [int]$Costs = 0
      ForEach ($License in $Licenses) {
          [string]$LicenseCost = $PricingHashTable[$License]
          # Monthly cost in cents (because some licenses cost sums like 16.40)
          [float]$LicenseCostCents = [float]$LicenseCost * 100
          If ($LicenseCostCents -gt 0) {
              # Compute annual cost for the license
              [float]$AnnualCost = $LicenseCostCents * 12
              # Add to the cumulative license costs
              $Costs = $Costs + ($AnnualCost)
              # Write-Host ("License {0} Cost {1} running total {2}" -f $License, $LicenseCost, $Costs)
          }
      }
    # Return 
    Return ($Costs/100)
}

报告许可费用

在脚本处理任何用户帐户之前,它会检查定价信息是否可用。它通过检查 SKU 列表中第一个产品的价格列来完成此操作。该脚本还从货币列中获取货币(字符串前缀)。如果此数据可用,则将 $PricingInfoAvailable 变量设置为 true,以控制脚本是否计算已分配许可证的成本信息并将其包含在输出报告中。如果变量为 false,则不包含定价信息。

图 2 显示了包含成本信息的许可报告示例。分配给用户的所有许可证的成本显示在“年度许可证成本”下。

[玩转系统] 报告 Microsoft 365 租户的用户许可成本

报告所有用户的数据后,报告将包含一些摘要信息(图 3),其中包括每次订阅的总成本(年度成本乘以许可证数量)。您可以通过多种方式对这些信息进行切割和切割。例如,您可以计算每个国家/地区、每个办事处或每个部门的用户的年度成本。

我确实喜欢能够计算已用许可证成本的总体百分比。现在,我的租户花费了 13,212 美元。但是,分配许可证的成本为 12,024 美元,因此我的许可证分配效率仅为 91.01%,Microsoft 每年会收到 1,188 美元的未使用许可证费用。

[玩转系统] 报告 Microsoft 365 租户的用户许可成本

当然,这是测试数据,我当然不会把这个数字留给微软去添加到微软在 2024 财年第二季度业绩中宣布的微软云 1348 亿美元的年运行率中。

更新:V1.6 脚本包括按国家和部门进行的成本分析。本文介绍了实现这些功能所需的代码更改。

不是许可证成本管理解决方案

需要强调的是,该脚本(您可以从 GitHub 下载)并不是一个成熟的许可证成本管理解决方案。相反,它演示了如何访问和使用租户可用的许可证信息。由于代码是 PowerShell,因此很容易修改以满足特定要求。如果有人发现问题,请在 GitHub 上记录。更好的是,解决问题并创建拉取请求,以便每个人都从您的贡献中受益。

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

取消回复欢迎 发表评论:

关灯