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

[玩转系统] 在 PowerShell 中使用 Get-MgGroup cmdlet

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

在 PowerShell 中使用 Get-MgGroup cmdlet


Get-MgGroup cmdlet 是获取和管理 Microsoft 365 组的简单方法。它允许您获取所有或特定组及其属性。 Get-MgGroup cmdlet 是适用于 PowerShell 的 Microsoft Graph SDK 的一部分,它允许你通过单个终结点管理所有 Microsoft 服务。

在本文中,我们将了解如何使用 Get-MgGroup cmdlet 从 Microsoft Entra 查找和检索组信息。

要求

在使用 Get-MgGroup cmdlet 之前,需要确保已安装 Microsoft Graph PowerShell 模块。您可以在此处阅读完整指南,或使用以下命令快速安装它:

Install-Module Microsoft.Graph -Force

此外,您还需要使用正确的范围连接到 Microsoft Graph。要获取组信息,我们只需要Group.Read.All范围。阅读本文中有关连接到 Microsoft Graph 和使用范围的更多信息。

Connect-MgGraph -Scopes 'Group.Read.All'

获取群组

Get-MgGroup cmdlet 允许您从 Microsoft Entra 查找并提取组信息。我们可以使用几个参数来查找或过滤用户:

  • GroupId - 根据 UPN 或 ObjectID 返回特定组
  • 过滤 - 基于 oDate v3 查询检索多个对象
  • 搜索 - 获取与搜索字符串匹配的所有组
  • 全部 - 返回所有结果(默认情况下返回前 100 项)
  • Top - 返回 n 个结果

值得一提的是,默认情况下 cmdlet 仅返回前 100 个结果。因此,请确保在需要时使用 -All 参数来获取所有结果。

按ID获取分组

当使用 Microsoft Graph 检索对象时,我们经常需要使用对象的 ID 来获取它。对于用户,我们可以使用 UserPrincipalName 而不是 ID,但是对于组,我们就没有那么奢侈了。 GroupID 参数仅接受实际 ID。

因此,要根据 ID 获取组,您可以执行以下操作:

Get-MgGroup -GroupId "ded414a7-89fa-4cd1-aa91-34c7d4757a4f"

按名称获取 MgGroup

更常见的方法是按名称获取组。但 Get-MgGroup cmdlet 没有组名称参数。这意味着我们必须使用 -Filter 参数根据全名或部分名称来查找组。

对于过滤器,我们可以使用以下运算符来获取组:

OperatorDescriptionExampleeqEquals toDisplayName eq ‘M365_E5’andAndorOrDisplayName eq ‘M365_E3’or DisplayName eq ‘M365_E5’startswithString starts withstartswith(DisplayName,’M365_E3′)

要获取名称为“M365_E5”的组,您应该在显示名称上使用 eq 运算符和过滤器:

Get-MgGroup -Filter "DisplayName eq 'M365_E5'"

如果您不知道确切的名称,那么startswith运算符也是一个不错的选择。这将获取名称以给定字符串开头的所有组:

Get-MgGroup -Filter "startswith(DisplayName,'M365')"

[玩转系统] 在 PowerShell 中使用 Get-MgGroup cmdlet

获取动态组

更难掌握的过滤器之一是对 GroupType 进行过滤。假设您想要从 Microsoft Entra 获取所有动态组。普通的过滤器不起作用,因为属性 GroupTypes 是一个对象。

但是,我们仍然可以使用 OData 过滤器对其进行过滤,如下所示:

Get-MgGroup -Filter "GroupTypes/any(x:x eq 'DynamicMembership')"

使用高级过滤器

正如您在上面所看到的,默认情况下过滤器参数非常有限。但是,可以在 Microsoft Graph 模块中使用更高级的过滤器。这些高级查询仅适用于 Microsoft Entra ID 对象(目录对象)。

要使用高级过滤器,我们需要在使用-Filter时添加两个参数。我们需要将 ConsistencyLevel 设置为 Eventual 并添加 Count 变量。添加这两个参数后,您也可以使用下面的搜索运算符。

OperatorDescriptionExampleneNot equal toDisplayName ne ‘M365_E5’notand NotendsWithString ends withendsWith(DisplayName,’E3′)

您可以在 Microsoft 文档中找到有关高级查询功能的更多信息。

获取去年创建的所有组

启用高级查询后,我们可以获取去年创建的所有组。为此,我们将过滤“创建日期时间”上的组,并通过从当前日期减去一年来计算日期。

请注意,我们还向 cmdlet 添加了参数 -ConsistencyLevel eventual-CountVariable Count

Get-MgGroup -Filter "CreatedDateTime ge $((Get-Date).AddYears(-1).ToString("s"))Z" -ConsistencyLevel eventual -CountVariable Count

我们现在还可以将其与其他运算符结合起来,例如获取去年创建的所有名称以“M365”开头的组:

Get-MgGroup -Filter "CreatedDateTime ge $((Get-Date).AddYears(-1).ToString("s"))Z and startsWith(Displayname,'M365')" -ConsistencyLevel eventual -CountVariable Count

使用搜索来查找组

除了filter参数之外,我们还可以使用-Search参数来查找组。该参数需要您要搜索的属性和值。您还需要将-consistencylevel设置为最终

-search 参数的优点是它允许我们搜索值的任何部分。例如,如果想搜索名称的一部分,我们可以使用:

Get-MgGroup -Search 'DisplayName:365' -ConsistencyLevel eventual

[玩转系统] 在 PowerShell 中使用 Get-MgGroup cmdlet

搜索的优点是您可以在 cmdlet 返回的几乎所有属性上使用它。所以我们甚至可以搜索描述,例如:

Get-MgGroup -Search 'Description:365' -ConsistencyLevel eventual

总结

使用 Get-MgGroup cmdlet 获取 Microsoft 365 组信息非常简单。请务必查看新的 Microsoft Entra PowerShell 模块,该模块使使用 Microsoft Graph 变得更加容易。

希望您喜欢这篇文章,如果您有任何疑问,请在下面发表评论。

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

取消回复欢迎 发表评论:

关灯