用于组管理的 Azure Active Directory 版本 2 cmdlet

本文包含有关如何使用 PowerShell 在 Azure Active Directory (Azure AD) 中管理组的示例。 此外,本文还介绍如何安装 Azure AD PowerShell 模块。 首先,必须下载 Azure AD PowerShell 模块

安装 Azure AD PowerShell 模块

若要安装 Azure AD PowerShell 模块,请使用以下命令:

    PS C:\Windows\system32> install-module azuread
    PS C:\Windows\system32> import-module azuread

若要验证模块是否可供使用,请运行下面的命令:

    PS C:\Windows\system32> get-module azuread

    ModuleType Version      Name                                ExportedCommands
    ---------- ---------    ----                                ----------------
    Binary     2.0.0.115    azuread                      {Add-AzureADAdministrati...}

现在可以开始使用模块中的 cmdlet 了。 有关 Azure AD 模块中 cmdlet 的完整说明,请参阅 Azure Active Directory PowerShell 版本 2 的联机参考文档。

备注

Azure AD PowerShell cmdlet 不适用于新版 Powershell 7,因为它基于 .Net Core。 我们意识到这一点,此 cmdlet 正在更新过程中。 到目前为止,我们建议使用 Windows PowerShell 5.x 模块来执行 Azure AD PowerShell 操作。

连接到目录

在开始使用 Azure AD PowerShell cmdlet 管理组之前,必须将 PowerShell 会话连接到要管理的目录。 请使用以下命令:

    PS C:\Windows\system32> Connect-AzureAD -AzureEnvironmentName AzureChinaCloud

该 cmdlet 会提示用户输入访问目录时需要使用的凭据。 在此示例中,我们将使用 karen@drumkit.partner.onmschina.cn 访问演示目录。 该 cmdlet 会返回一个确认,表明会话已成功连接到目录:

    Account                       Environment Tenant ID
    -------                       ----------- ---------
    Karen@drumkit.partner.onmschina.cn AzureChinaCloud  85b5ff1e-0402-400c-9e3c-0f…

现在可以开始使用 AzureAD cmdlet 管理目录中的组。

检索组

若要从目录中检索现有组,请使用 Get-AzureADGroups cmdlet。

若要检索目录中的所有组,请使用不带参数的 cmdlet:

    PS C:\Windows\system32> get-azureadgroup

该 cmdlet 会返回已连接目录中的所有组。

可以使用 -objectID 参数检索已指定组 objectID 的特定组:

    PS C:\Windows\system32> get-azureadgroup -ObjectId e29bae11-4ac0-450c-bc37-6dae8f3da61b

该 cmdlet 现在会返回其 objectID 与用户输入的参数值匹配的组:

    DeletionTimeStamp            :
    ObjectId                     : e29bae11-4ac0-450c-bc37-6dae8f3da61b
    ObjectType                   : Group
    Description                  :
    DirSyncEnabled               :
    DisplayName                  : Pacific NW Support
    LastDirSyncTime              :
    Mail                         :
    MailEnabled                  : False
    MailNickName                 : 9bb4139b-60a1-434a-8c0d-7c1f8eee2df9
    OnPremisesSecurityIdentifier :
    ProvisioningErrors           : {}
    ProxyAddresses               : {}
    SecurityEnabled              : True

可以使用 -filter 参数搜索特定组。 此参数采用 ODATA 筛选器子句,并返回与筛选器匹配的所有组,如以下示例所示:

    PS C:\Windows\system32> Get-AzureADGroup -Filter "DisplayName eq 'Intune Administrators'"


    DeletionTimeStamp            :
    ObjectId                     : 31f1ff6c-d48c-4f8a-b2e1-abca7fd399df
    ObjectType                   : Group
    Description                  : Intune Administrators
    DirSyncEnabled               :
    DisplayName                  : Intune Administrators
    LastDirSyncTime              :
    Mail                         :
    MailEnabled                  : False
    MailNickName                 : 4dd067a0-6515-4f23-968a-cc2ffc2eff5c
    OnPremisesSecurityIdentifier :
    ProvisioningErrors           : {}
    ProxyAddresses               : {}
    SecurityEnabled              : True

备注

Azure AD PowerShell cmdlet 实现 OData 查询标准。 有关详细信息,请参阅使用 OData 终结点的 OData 系统查询选项中的 $filter。

创建组

若要在目录中创建新的组,可使用 New-AzureADGroup cmdlet。 此 cmdlet 创建名为“Marketing”的新安全组:

    PS C:\Windows\system32> New-AzureADGroup -Description "Marketing" -DisplayName "Marketing" -MailEnabled $false -SecurityEnabled $true -MailNickName "Marketing"

更新组

若要更新现有组,请使用 Set-AzureADGroup cmdlet。 在此示例中,我们将更改“Intune 管理员”组的 DisplayName 属性。 首先,我们将使用 Get-AzureADGroup cmdlet 查找该组,然后使用 DisplayName 属性进行筛选:

    PS C:\Windows\system32> Get-AzureADGroup -Filter "DisplayName eq 'Intune Administrators'"


    DeletionTimeStamp            :
    ObjectId                     : 31f1ff6c-d48c-4f8a-b2e1-abca7fd399df
    ObjectType                   : Group
    Description                  : Intune Administrators
    DirSyncEnabled               :
    DisplayName                  : Intune Administrators
    LastDirSyncTime              :
    Mail                         :
    MailEnabled                  : False
    MailNickName                 : 4dd067a0-6515-4f23-968a-cc2ffc2eff5c
    OnPremisesSecurityIdentifier :
    ProvisioningErrors           : {}
    ProxyAddresses               : {}
    SecurityEnabled              : True

接下来,我们会将“说明”属性更改为新值“Intune 设备管理员”:

    PS C:\Windows\system32> Set-AzureADGroup -ObjectId 31f1ff6c-d48c-4f8a-b2e1-abca7fd399df -Description "Intune Device Administrators"

现在,如果我们再次找到该组,我们会看到 Description 属性已更新以反映新值:

    PS C:\Windows\system32> Get-AzureADGroup -Filter "DisplayName eq 'Intune Administrators'"

    DeletionTimeStamp            :
    ObjectId                     : 31f1ff6c-d48c-4f8a-b2e1-abca7fd399df
    ObjectType                   : Group
    Description                  : Intune Device Administrators
    DirSyncEnabled               :
    DisplayName                  : Intune Administrators
    LastDirSyncTime              :
    Mail                         :
    MailEnabled                  : False
    MailNickName                 : 4dd067a0-6515-4f23-968a-cc2ffc2eff5c
    OnPremisesSecurityIdentifier :
    ProvisioningErrors           : {}
    ProxyAddresses               : {}
    SecurityEnabled              : True

删除组

若要从目录中删除组,请使用 Remove-AzureADGroup cmdlet,如下所示:

    PS C:\Windows\system32> Remove-AzureADGroup -ObjectId b11ca53e-07cc-455d-9a89-1fe3ab24566b

管理组成员身份

添加成员

若要向组添加新成员,请使用 Add-AzureADGroupMember cmdlet。 该命令将成员添加到我们在上一示例中使用的“Intune 管理员”组:

    PS C:\Windows\system32> Add-AzureADGroupMember -ObjectId 31f1ff6c-d48c-4f8a-b2e1-abca7fd399df -RefObjectId 72cd4bbd-2594-40a2-935c-016f3cfeeeea

ObjectId 参数是要将成员添加到的组的 ObjectID,-RefObjectId 是要作为成员添加到组的用户的 ObjectID。

获取成员

若要获取组的现有成员,请使用 Get-AzureADGroupMember cmdlet,如以下示例所示:

    PS C:\Windows\system32> Get-AzureADGroupMember -ObjectId 31f1ff6c-d48c-4f8a-b2e1-abca7fd399df

    DeletionTimeStamp ObjectId                             ObjectType
    ----------------- --------                             ----------
                          72cd4bbd-2594-40a2-935c-016f3cfeeeea User
                          8120cc36-64b4-4080-a9e8-23aa98e8b34f User

删除成员

若要删除我们以前添加到组的成员,请使用 Remove-AzureADGroupMember cmdlet,如下所示:

    PS C:\Windows\system32> Remove-AzureADGroupMember -ObjectId 31f1ff6c-d48c-4f8a-b2e1-abca7fd399df -MemberId 72cd4bbd-2594-40a2-935c-016f3cfeeeea

验证成员

若要验证用户的组成员身份,请使用 Select-AzureADGroupIdsUserIsMemberOf cmdlet。 该 cmdlet 使用用户的 ObjectId 作为参数,以便检查组成员身份;同时使用组列表作为参数来检查成员身份。 组列表必须以类型为“Microsoft.Open.AzureAD.Model.GroupIdsForMembershipCheck”的复合变量形式提供,因此必须先创建该类型的变量:

    PS C:\Windows\system32> $g = new-object Microsoft.Open.AzureAD.Model.GroupIdsForMembershipCheck

接下来提供可在该复合变量的“GroupIds”属性中查看的 groupIds 的值:

    PS C:\Windows\system32> $g.GroupIds = "b11ca53e-07cc-455d-9a89-1fe3ab24566b", "31f1ff6c-d48c-4f8a-b2e1-abca7fd399df"

现在,如果我们需要针对 $g 中的组查看 ObjectID 为 72cd4bbd-2594-40a2-935c-016f3cfeeeea 的用户的组成员身份,则应使用:

    PS C:\Windows\system32> Select-AzureADGroupIdsUserIsMemberOf -ObjectId 72cd4bbd-2594-40a2-935c-016f3cfeeeea -GroupIdsForMembershipCheck $g

    OdataMetadata                                                                                                 Value
    -------------                                                                                                  -----
    https://graph.chinacloudapi.cn/85b5ff1e-0402-400c-9e3c-0f9e965325d1/$metadata#Collection(Edm.String)             {31f1ff6c-d48c-4f8a-b2e1-abca7fd399df}

返回的值是该用户所在组的列表。 也可通过 Select-AzureADGroupIdsContactIsMemberOf、Select-AzureADGroupIdsGroupIsMemberOf 或 Select-AzureADGroupIdsServicePrincipalIsMemberOf 应用此方法,检查特定组列表的联系人、组或服务主体成员身份

禁止用户创建组

可以禁止非管理员用户创建安全组。 Microsoft Online Directory Services (MSODS) 的默认行为是允许非管理员用户创建组,无论是否还启用了自助服务组管理 (SSGM)。 SSGM 设置仅控制“我的应用”访问面板中的行为。

若要对非管理员用户禁用组创建,请执行以下操作:

  1. 验证是否允许非管理员用户创建组:

    PS C:\> Get-MsolCompanyInformation | fl UsersPermissionToCreateGroupsEnabled
    
  2. 如果它返回 UsersPermissionToCreateGroupsEnabled : True,则非管理员用户可以创建组。 若要禁用此功能,请执行以下操作:

    Set-MsolCompanySettings -UsersPermissionToCreateGroupsEnabled $False
    

管理组的所有者

若要向组添加所有者,请使用 Add-AzureADGroupOwner cmdlet:

    PS C:\Windows\system32> Add-AzureADGroupOwner -ObjectId 31f1ff6c-d48c-4f8a-b2e1-abca7fd399df -RefObjectId 72cd4bbd-2594-40a2-935c-016f3cfeeeea

-ObjectId 参数是要将所有者添加到的组的 ObjectID,-RefObjectId 是要作为组所有者添加的用户或服务主体的 ObjectID。

若要检索组的所有者,请使用 Get-AzureADGroupOwner cmdlet:

    PS C:\Windows\system32> Get-AzureADGroupOwner -ObjectId 31f1ff6c-d48c-4f8a-b2e1-abca7fd399df

该 cmdlet 将返回指定组的所有者(用户和服务主体)的列表:

    DeletionTimeStamp ObjectId                             ObjectType
    ----------------- --------                             ----------
                          e831b3fd-77c9-49c7-9fca-de43e109ef67 User

若需从组中删除所有者,请使用 Remove-AzureADGroupOwner cmdlet:

    PS C:\Windows\system32> remove-AzureADGroupOwner -ObjectId 31f1ff6c-d48c-4f8a-b2e1-abca7fd399df -OwnerId e831b3fd-77c9-49c7-9fca-de43e109ef67

保留的别名

创建组后,某些终结点允许最终用户指定一个 mailNickname 或别名,用作组的电子邮件地址的一部分。  仅 Azure AD 全局管理员可以创建具有以下权限较高的电子邮件别名的组。

  • abuse
  • admin
  • 主要区域中的
  • hostmaster
  • majordomo
  • postmaster
  • root
  • secure
  • security
  • ssl-admin
  • webmaster

到本地的组写回(预览版)

如今,许多组仍在本地 Active Directory 中管理。 为了响应将云组同步回本地的请求,适用于 Azure AD 的 Microsoft 365 组写回功能现在推出了预览版。

Microsoft 365 组是在云中创建和管理的。 使用写回功能,可以将 Microsoft 365 组作为通讯组写回到安装了 Exchange 的 Active Directory 林。 然后,具有本地 Exchange 邮箱的用户可以从这些组发送和接收电子邮件。 组写回功能不支持 Azure AD 安全组或通讯组。

有关更多详细信息,请参阅 Azure AD Connect 同步服务的文档。

Microsoft 365 组写回是 Azure Active Directory (Azure AD) 的一项公共预览功能,可通过任何付费 Azure AD 许可计划获得。 有关预览版的一些法律信息,请参阅 Azure 预览版补充使用条款

后续步骤

如需更多 Azure Active Directory PowerShell 文档,可参阅 Azure Active Directory Cmdlet