如何创建动态Office 365组

时间:2019-04-30 14:33:45

标签: azure powershell exchange-server

我是Exchange Online和Azure的新手,但有人问我是否可以使用New-UnifiedGroup和Set-UnifiedGroup cmdlet在Exchange Online中创建O365组。然后,他们希望能够根据某些条件使这些小组动态化。甚至有可能吗?还是完全跳过Exchange Online,在Azure中使用New-AzureADMSGroup cmdlet创建动态组。

感谢您的帮助。 谢谢。

2 个答案:

答案 0 :(得分:0)

是的,您可以使用AzureAD PowerShell cmdlet New-AzureADMSGroup创建一个Office 365组,并且需要首先安装AzureAD模块。

例如,此命令使用以下规则创建一个新的动态组:

  

user.department-包含“营销”

     

双引号替换为单引号。

     

处理状态为开。这意味着目录中的所有用户   符合条件的规则将添加为组的成员。任何使用者   不符合条件的人将从组中删除。

New-AzureADMSGroup -DisplayName "Dynamic Group 01" -Description "Dynamic group created from PS" -MailEnabled $False -MailNickName "group" -SecurityEnabled $True -GroupTypes "DynamicMembership" -MembershipRule "(user.department -contains ""Marketing"")" -MembershipRuleProcessingState "On"

更多参考文献:https://techcommunity.microsoft.com/t5/Azure-Active-Directory-Identity/New-enhancements-to-the-AzureAD-PowerShell-2-0-preview-Manage/ba-p/245153

https://blog.hubfly.com/office-365/useful-powershell-cmdlets-to-administer-office-365-groups-part-1

答案 1 :(得分:0)

好的,这就是我们想出的解决方案。

需要AzureADPreview模块,最新版本为2.0.2.17

AzureAD模块无法使用,因为它缺少组成员身份所需的参数。

需要连接到AzureAD,也需要在线交换。

与您连接的帐户必须是Exchange Online中的Exchange管理员和AzureAD中的用户管理员。 在我们的示例中,我们需要一个动态的Office组,以及基于extensionattribute12的MembershipRule。

#***********************************************************************
$ADUser = "samAccountName@yourdomain"
$ADPassword = 'the password'
$ADPwd = $ADPassword | ConvertTo-SecureString -AsPlainText -Force
$UserCredential = new-object system.management.automation.pscredential $ADuser, $ADPwd
#***********************************************************************
"Connect AzureAD"
Connect-AzureAD -Credential $UserCredential

"Connect to Exchange Online"
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session -DisableNameChecking

#######################################
function ConvertStaticGroupToDynamic
{
     Param([string]$groupId, [string]$dynamicMembershipRule)
     $dynamicGroupTypeString = "DynamicMembership"
     #existing group types
     [System.Collections.ArrayList]$groupTypes = (Get-AzureAdMsGroup -Id $groupId).GroupTypes

     if($groupTypes -ne $null -and $groupTypes.Contains($dynamicGroupTypeString))
     {
         throw "This group is already a dynamic group. Aborting conversion.";
     }
     #add the dynamic group type to existing types
     $groupTypes.Add($dynamicGroupTypeString)

     #modify the group properties to make it a static group: i) change GroupTypes to add the dynamic type, ii) start execution of the rule, iii) set the rule
     Set-AzureAdMsGroup -Id $groupId -GroupTypes $groupTypes.ToArray() -MembershipRuleProcessingState "On" -MembershipRule $dynamicMembershipRule
}
#######################################
$ExtAtt12 = "Marketing"
$NewGroupName = "O365-OfficeGroupTest"
"[$NewGroupName] create group"
New-UnifiedGroup -DisplayName $NewGroupName
Set-UnifiedGroup $NewGroupName -UnifiedGroupWelcomeMessageEnabled:$false
$ID = (Get-UnifiedGroup $NewGroupName).ExternalDirectoryObjectId
sleep 15 # Allow time for Exchange Online to Sync with AzureAD
ConvertStaticGroupToDynamic -groupId $ID -dynamicMembershipRule "(User.extensionattribute12 -eq ""$ExtAtt12"")"