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

[玩转系统] 使用 PowerShell 管理 Azure AD 和 Microsoft 365 中的组

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

使用 PowerShell 管理 Azure AD 和 Microsoft 365 中的组


您可以使用 Azure 门户或 Microsoft 365 管理中心等图形管理工具来管理 Azure 中的组。在本文中,我们将展示如何使用 PowerShell 在 Azure AD 或 Microsoft 365 中创建、编辑、更新和删除组。

首先要注意的是,Azure (M365) 中有几种类型的组:

  • Azure AD 安全组用于管理对 Azure 应用和资源的访问。您可以允许访问 Azure 应用程序、向安全组分配策略或 Azure 许可证(基于组的许可)。

  • Microsoft 365 组(以前称为Office 365 组)用作访问不同 Microsoft 365 产品(Teams、Yammer、PowerBI、SharePoint 和共享 Outlook 邮箱)的通用方式。总的来说,M365是团队成员共享的工作区域。将用户添加到 M365 群组时,他们可以访问自群组创建以来发布的所有内容。此类组中的用户可以共享文件、文档、邮件列表、日历等;

  • 分发组用于将消息分发给一组收件人或发送群发电子邮件;

  • 启用邮件的安全组用于授予对资源的访问权限和发送邮件。

您可以手动(分配成员身份)或动态(根据用户/设备属性自动添加)将用户添加到 Azure AD 或 Microsoft 365 组。

如何使用 PowerShell 创建 Azure AD 安全组?

Azure AD 安全组可以手动创建或从本地 Active Directory 同步。让我们看看如何创建 Azure AD 安全组并使用 PowerShell 将用户添加到其中。

使用 Azure AD PowerShell 模块连接到 Azure 租户:

Connect-AzureAD

要创建新的 Azure 安全组,请运行以下命令:

New-AzureADGroup -DisplayName grVMadmins -SecurityEnabled $true -Description "CORP VM admins" -MailEnabled $false -MailNickName "NotSet"

[玩转系统] 使用 PowerShell 管理 Azure AD 和 Microsoft 365 中的组

使用 Microsoft Graph API,您可以获取 Azure AD 中组的创建日期。

要获取有关组的信息,请运行以下命令:

Get-AzureADGroup -SearchString grVMadmins

要将用户添加到 Azure AD 组,请使用 Add-AzureADGroupMember cmdlet。

获取用户和组 ID:

$GroupObj = Get-AzureADGroup -SearchString grVMadmins
$UserObj = Get-AzureADUser -SearchString [email protected]

然后将用户 ID 添加到组中:

Add-AzureADGroupMember -ObjectId $GroupObj.ObjectId -RefObjectId $UserObj.ObjectId

列出组的成员:

$GroupObj = Get-AzureADGroup -SearchString grVMadmins
Get-AzureADGroupMember -ObjectId $GroupObj.ObjectId| select DisplayName,UserPrincipalName,UserType

[玩转系统] 使用 PowerShell 管理 Azure AD 和 Microsoft 365 中的组

您可以使用 Add-AzureADGroupOwner 分配 Azure 组所有者。

Add-AzureADGroupMember -ObjectId $GroupObj.ObjectId -RefObjectId $UserObj.ObjectId

显示群组所有者:

$GroupObj = Get-AzureADGroup -SearchString grVMadmins
Get-AzureADGroupOwner -ObjectId $GroupObj.ObjectId

列出通过 Azure AD Connect 从本地 Active Directory 同步的所有组(

LastDirSyncTime

属性显示上次同步的日期)。

Get-AzureADGroup -Filter 'DirSyncEnabled eq true' | select ObjectId,DisplayName,LastDirSyncTime

使用 PowerShell 管理 Microsoft 365 组

Microsoft 365 组是使用 M365 应用(Teams、Share Point、Outlook、Yammer 等)自动创建的。默认情况下,任何租户用户都可以创建 Microsoft 365 组。当用户在 Outlook 或任何其他应用程序中创建新组时,将创建一个 Microsoft 365 组。 Microsoft 365 组在所有 M365 服务中均可用。

[玩转系统] 使用 PowerShell 管理 Azure AD 和 Microsoft 365 中的组

该组立即显示在 Azure 门户和 Microsoft 365 管理中心的组列表中。

[玩转系统] 使用 PowerShell 管理 Azure AD 和 Microsoft 365 中的组

要创建 Microsoft 365 组,您可以使用 Exchange Online for PowerShell (EXOv2) 模块中的 New-UnifiedGroup cmdlet。

连接到您的租户:

Connect-ExchangeOnline

要创建新的 M365 组,请运行以下命令:

New-UnifiedGroup -DisplayName "HQ IT Department" -Alias "it-dept" -EmailAddresses [email protected] -AccessType Private

M365 有两种类型的组:

  • 公共——一个开放的团体。任何用户都可以加入该群组并访问其内容;

  • 私人 - 只有群组成员有权访问。组的所有者或 Azure 管理员可以将用户添加到私有组。

要将用户或所有者添加到组中,请使用 Add-UnifiedGroupLinks cmdlet。让我们向该组添加一个用户并将其指定为所有者:

Add-UnifiedGroupLinks -Identity it-dept -LinkType Members -Links DiegoF
Add-UnifiedGroupLinks -Identity it-dept -LinkType Owners -Links DiegoF

您可以将订阅者添加到组中。订阅者将收到电子邮件通知:

Add-UnifiedGroupLinks -Identity it-dept -LinkType Subscribers -Links AlexW

如果要一次将多个用户添加到 Microsoft 365 组,可以从 CSV 文件导入用户列表:

Import-CSV "C:\PS\Data\add_m365_members.csv" | ForEach-Object {
Add-UnifiedGroupLinks -Identity it-dept -LinkType Members -Links $_.member
}

显示组中的所有用户:

Get-UnifiedGroupLinks -Identity it-dept -LinkType Members

[玩转系统] 使用 PowerShell 管理 Azure AD 和 Microsoft 365 中的组

显示群组所有者:

Get-UnifiedGroupLinks -Identity it-dept -LinkType Owners

您可以从全局地址列表 (GAL) 中隐藏 M365 组:

Set-UnifiedGroup -Identity it-dept -HiddenFromAddressListsEnabled $true

使用 Azure AD PowerShell 创建和管理动态组

您可以在 Azure AD 中创建用户或设备的动态组。根据 Azure 用户属性将成员动态添加到组中。 Azure 安全组和 Microsoft 365 组都支持动态成员身份。要创建动态组,请使用 AzureAD 模块中的 New-AzureADMSGroup cmdlet。

动态组需要 Azure AD Premium P1 或 P2 许可证。

例如,您可以创建一个包含来自慕尼黑 (

user.city -eq "Munich"

)与具体工作职位(

user.jobTitle -like "*Engineer*"

)。让我们为此示例创建一个动态 Azure 安全组:

New-AzureADMSGroup -Description "mun_engineers" -DisplayName "All Munich IT dept engineers (dynamic)" -MailEnabled $false -SecurityEnabled $true -MailNickname mun_engineers -GroupTypes "DynamicMembership" -MembershipRule "(user.city -eq ""Munich"" -and user.jobTitle -contains ""Engineer"")" -MembershipRuleProcessingState "On"

[玩转系统] 使用 PowerShell 管理 Azure AD 和 Microsoft 365 中的组

不幸的是,AzureAD 模块在运行命令后返回以下错误:

New-AzureADMSGroup : A parameter cannot be found that matches parameter name 'MembershipRule'.

要在 Azure 中创建动态组,您必须使用 AzureADPreview 模块:

Import-Module AzureADPreview
get-command New-AzureADMSGroup

[玩转系统] 使用 PowerShell 管理 Azure AD 和 Microsoft 365 中的组

要创建动态 Microsoft 365 组,请指定统一作为组类型:

New-AzureADMSGroup -DisplayName "M365 Admins" -Description "Dynamic Microsoft 365 Group for tenant admins" -MailEnabled $True -SecurityEnabled $True -MailNickname M365GAdmins -GroupTypes "DynamicMembership", "Unified" -MembershipRule "(User.department -eq ""IT"")" -MembershipRuleProcessingState "On"

当任何用户或设备属性发生更改时,组织中 Azure 动态组的成员资格也会更新。如果您对AD进行批量更改、导入大量用户或更改组/用户架构,建议暂停动态组的自动更新一段时间:

$dynGroupObj = Get-AzureADMSGroup -SearchString “All Munich IT dept engineers (dynamic)”
Set-AzureADMSGroup -Id $dynGroupObj.id -MembershipRuleProcessingState "Paused"

要为动态组启用规则处理,请运行以下命令:

Set-AzureADMSGroup -Id $dynGroupObj.id -MembershipRuleProcessingState "On"

下表显示了可用于构建 Azure 动态组查询的用户属性。

TypeAttributeExampleBoolaccountEnableduser.accountEnabled -eq trueBooldirSyncEnableduser.dirSyncEnabled -eq trueStringcity(user.city -eq "value")Stringcountry(user.country -eq “value”)StringcompanyName(user.companyName -eq “value”)Stringdepartment(user.department -eq “value”)StringdisplayName(user.displayName -eq “value”)StringemployeeId(user.employeeId -eq “value”)StringfacsimileTelephoneNumber(user.facsimileTelephoneNumber -eq “value”)StringgivenName(user.givenName -eq “value”)StringjobTitle(user.jobTitle -eq “value”)Stringmail(user.mail -eq “value”)StringmailNickName(user.mailNickName -eq “value”)Stringmobile(user.mobile -eq “value”)StringobjectId(user.objectId -eq “value”)StringonPremisesSecurityIdentifier(user.onPremisesSecurityIdentifier -eq “value”)StringpasswordPolicies(user.passwordPolicies -eq “DisableStrongPassword”)StringphysicalDeliveryOfficeName(user.physicalDeliveryOfficeName -eq “value”)StringpostalCode(user.postalCode -eq “value”)StringpreferredLanguage(user.preferredLanguage -eq “de-DE”)StringsipProxyAddressuser.sipProxyAddress -eq “value”Stringstate(user.state -eq “value”)StringstreetAddressuser.streetAddress -eq “value”Stringsurnameuser.surname -eq “value”StringtelephoneNumber(user.telephoneNumber -eq “value”)StringusageLocation(user.usageLocation -eq “US”)StringuserPrincipalName(user.userPrincipalName -eq “[email protected]”)StringuserType(user.userType -eq “Member”)String collectionotherMails(user.otherMails -contains “[email protected]”)String collectionproxyAddresses(user.proxyAddresses -contains “SMTP: [email protected]”)

在本地 Active Directory 中,您只能使用 Exchange 动态通讯组。

如果要在 AD 中创建动态安全组,可以使用 PowerShell 自动化脚本(请参阅示例)。了解有关使用 PowerShell 在本地 Active Directory 中进行组管理的更多信息。

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

取消回复欢迎 发表评论:

关灯