使用 PowerShell 管理通讯组 |办公室365
本文是五篇文章系列中的第一篇文章,专门讨论使用 PowerShell 在基于 Office 365 和 Exchange Online 的环境中管理通讯组的主题。
本文的目的是提供 PowerShell 命令索引的“精简版”,我们需要将其用于常见的分发组管理任务。
对于本文中的每个部分,例如创建新通讯组、管理现有通讯组以及向现有通讯组添加成员,我都有专门的单独文章。
在 Office 365 中使用 PowerShell 管理通讯组 |系列文章
如果 PowerShell 命令的“简短版本”对您来说不够,并且您需要更多信息或更多示例,我们邀请您阅读有关通过 PowerShell 文章系列进行分发组管理的具体文章。
该系列文章包括以下文章:
- 使用 PowerShell 管理通讯组 | Office 365(本文)
- 在 Office 365 中使用 PowerShell 管理通讯组 |创建和管理通讯组
- 在 Office 365 中使用 PowerShell 管理通讯组 |将成员添加到现有通讯组
- 在 Office 365 中使用 PowerShell 管理通讯组 |查看和导出有关通讯组的信息
- 在 Office 365 中使用 PowerShell 管理通讯组 |删除通讯组和成员|转换通讯组
1. 创建新的通讯组
如果您想了解有关使用 PowerShell 进行通讯组管理以及“创建通讯组”主题的更多详细信息,您可以阅读文章在 Office 365 中使用 PowerShell 管理通讯组 |创建和管理通讯组。
创建新的通讯组(使用默认设置)
PowerShell命令语法:
New-DistributionGroup -Name "<Distribution Group Name>"PowerShell 命令示例:
New-DistributionGroup -Name "Sales USA"创建新的通讯组 + 设置其他通讯组设置
PowerShell命令语法:
New-DistributionGroup -Name <Distribution Group name> -DisplayName <DL display name> -Alias <Alias> -PrimarySmtpAddress <Email Address> -ManagedBy <identity>PowerShell 命令示例:
New-DistributionGroup -Name "Sales USA" -DisplayName "Sales USA mail list" -Alias "SalesUSA" -PrimarySmtpAddress "SalesUSA@o365info.com" -ManagedBy "Brad"通过从 CSV 文件导入信息来创建通讯组
PowerShell命令语法:
Import-CSV <Path> | ForEach {New-DistributionGroup -Name $_.name -Type $_.Type}PowerShell 命令示例:
Import-CSV "C:\Temp\DL-Group.csv" | ForEach {New-DistributionGroup -Name $_.name -Type $_.Type}您可以下载我们在本文中用于演示目的的 CSV 文件。
2. 管理现有通讯组设置
如果您想获得有关使用 PowerShell 进行通讯组管理以及“管理通讯组”主题的更多详细信息,您可以阅读文章在 Office 365 中使用 PowerShell 管理通讯组 |创建和管理通讯组。
启用或禁用通讯组从外部发件人获取电子邮件
为了使外部收件人能够向 Exchange Online 通讯组发送电子邮件,我们将参数“RequireSenderAuthenticationEnabled”的值设置为 $False。
PowerShell命令语法:
Set-DistributionGroup "<Distribution Group Name>" -RequireSenderAuthenticationEnabled $FalsePowerShell 命令示例:
Set-DistributionGroup "Sales USA" -RequireSenderAuthenticationEnabled $False允许外部收件人向所有通讯组发送电子邮件(批量模式)
PowerShell 命令示例:
Get-DistributionGroup | Set-DistributionGroup -RequireSenderAuthenticationEnabled $False替换现有通讯组所有者
PowerShell命令语法:
Set-DistributionGroup -Identity "<Distribution Group Name>" -ManagedBy <Identity>PowerShell 命令示例:
Set-DistributionGroup -Identity "Sales USA" -ManagedBy "Brad" -BypassSecurityGroupManagerCheck将其他所有者添加到通讯组
PowerShell命令语法:
Set-DistributionGroup "<Distribution Group name>" -ManagedBy @{Add='<Identity 1>','<Identity 2>'}PowerShell 命令示例:
Set-DistributionGroup "Sales USA" -ManagedBy @{Add='bob','brad'}设置通讯组主电子邮件地址
PowerShell命令语法:
Set-DistributionGroup "<Distribution Group name>" -PrimarySmtpAddress <primary E-mail address>PowerShell 命令示例:
Set-DistributionGroup "Sales UK" -PrimarySmtpAddress "SalesUK@o365info.com"通过从 CSV 文件导入信息来设置通讯组主电子邮件地址
在我们的示例中,CSV 文件名为 Distribution-Groups-information.csv。
PowerShell 命令示例:
$GroupList = Import-CSV "C:\temp\Distribution-Groups-information.csv"
ForEach ($group in $GroupList) {
ForEach ($email in $GroupList) {
}
Set-DistributionGroup -BypassSecurityGroupManagerCheck -Identity $group.GroupName -PrimarySmtpAddress $email.email
}您可以下载我们在本文中用于演示目的的 CSV 文件。
将其他电子邮件地址添加到现有通讯组电子邮件地址
PowerShell 命令示例:
Set-DistributionGroup "Sales UK" -emailaddresses @{Add='SalesUK02@o365info.com','SalesUK02@o365info.com','SalesUK02@o365info.com'}替换(删除)现有通讯组别名电子邮件
PowerShell 命令示例:
Set-DistributionGroup "Sales UK" -emailaddresses 'SalesUK02@o365info.com','SalesUK03@o365info.com'删除现有通讯组别名电子邮件地址
PowerShell命令语法:
Set-DistributionGroup "<Distribution Group name>" -EmailAddresses @{Remove='<Identity 1>','<Identity 2>'}PowerShell 命令示例:
Set-DistributionGroup "Sales UK" -EmailAddresses @{Remove=' Sales01@o365info.com','Sales02@o365info.com'}从 GAL(全局地址列表)隐藏通讯组
PowerShell命令语法:
Set-DistributionGroup "<Distribution Group Name>" -HiddenFromAddressListsEnabled $TruePowerShell 命令示例:
Set-DistributionGroup "Sales UK" -HiddenFromAddressListsEnabled $True将现有通讯组设置为仅接受来自特定发件人的电子邮件
PowerShell命令语法:
Set-DistributionGroup "<Distribution Group Name>" -AcceptMessagesOnlyFrom <Allowed E-mail address 1>, < Allowed E-mail address 2>PowerShell 命令示例:
Set-DistributionGroup "Sales UK" -AcceptMessagesOnlyFrom Bradp@o365info.com,Angelina@o365info.com定义通讯组主持人
PowerShell命令语法:
Set-DistributionGroup "<Distribution Group Name>" -ModeratedBy <E-mail address>, <E-mail address>PowerShell 命令示例:
Set-DistributionGroup "Sales UK" -ModeratedBy Bradp@o365info.com,Angelina@o365info.com为通讯组发送外出回复
PowerShell命令语法:
Set-DistributionGroup "<Distribution Group Name>" -SendOofMessageToOriginatorEnabled $TruePowerShell 命令示例:
Set-DistributionGroup "Sales UK" -SendOofMessageToOriginatorEnabled $True向通讯组分配“发送为”权限
PowerShell命令语法:
Add-RecipientPermission "<Distribution Group Name>" -Trustee <Identity> -AccessRights SendAs -Confirm:$FalsePowerShell 命令示例:
Add-RecipientPermission "Sales UK" -Trustee Brad -AccessRights SendAs -Confirm:$False3. 将用户添加到通讯组
如果您想获得有关使用 PowerShell 进行通讯组管理以及“向现有通讯组添加成员”主题的更多详细信息,您可以阅读文章在 Office 365 中使用 PowerShell 管理通讯组 |将成员添加到现有通讯组。
将用户(收件人)添加到通讯组
PowerShell命令语法:
Add-DistributionGroupMember "<Distribution Group Name>" -Member "<Identity>"PowerShell 命令示例:
Add-DistributionGroupMember -Identity "Sales UK" -Member "Bradp"从 CSV 文件导入通讯组成员
PowerShell 命令示例:
$Userslist = Import-CSV C:\Temp\Distribution-Groups-Members.csv
ForEach ($User in $Userslist) {
Add-DistributionGroupMember -Identity "Sales France" -Member $User.PrimarySmtpAddress
}将用户(收件人)添加到多个通讯组
PowerShell命令语法:
$Variable = "<Distribution Group name>", "<Distribution Group name>", "<Distribution Group name>"
ForEach ($item in $Variable) {
Add-DistributionGroupMember -Identity $item -Member <Identity>
}将部门为销售的所有用户添加到通讯组*
PowerShell 命令示例:
$SalesUsers = Get-User | Where { $_.Department -like "Sales*" }
foreach ($User in $SalesUsers) {
Add-DistributionGroupMember -Identity "Sales worldwide" -Member $User.name
}您可以下载我们在本文中用于演示目的的 CSV 文件。
将用户添加到过去 48 小时内创建的通讯组
PowerShell 命令示例:
$AllNewDistributionGroups = Get-DistributionGroup | Where { $_.WhenCreated -ge ((Get-Date).AddHours(-48)) }
ForEach ($Group in $AllNewDistributionGroups) {
Add-DistributionGroupMember -Identity $Group.name -Member Bradp
}4.查看通讯组信息
如果您想获得有关使用 PowerShell 进行通讯组管理的更多详细信息以及“查看和导出有关通讯组的信息”主题,您可以阅读文章在 Office 365 中使用 PowerShell 管理通讯组 |查看和导出有关通讯组的信息。
显示所有通讯组列表+详细信息
Get-DistributionGroup显示通讯组成员
PowerShell命令语法:
Get-DistributionGroupMember "<Distribution Group Name>"PowerShell 命令示例:
Get-DistributionGroupMember "Sales France"统计通讯组成员的数量
PowerShell 命令示例:
(Get-DistributionGroupMember "IT").Count显示具有特定电子邮件域的通讯组列表
PowerShell命令语法:
Get-DistributionGroup | Where {$_.emailaddresses -like <"*Domain Name*">} | FT -Property Name,Alias,EmailAddresses -Autosize在我们的具体示例中,我们查找电子邮件地址包含域名 o365info.com 的通讯组。
PowerShell 命令示例:
Get-DistributionGroup | Where {$_.emailaddresses -like "*o365info.com*"} | FT -Property Name,Alias,EmailAddresses -Autosize获取过去 2 周内创建的通讯组列表
显示有关在特定日期范围之前或之后更新的通讯组的信息。
PowerShell 命令示例:
Get-DistributionGroup | Where {$_.WhenCreated -ge ((Get-Date).Adddays(-14))} | FT DisplayName,WhenCreated显示所有者(管理者)为用户 X 的所有通讯组
PowerShell 命令示例:
Get-DistributionGroup | Where {$_.ManagedBy -like "*adele*"} | FT DisplayName,ManagedBy显示具有主持人的所有通讯组
PowerShell 命令示例:
Get-DistributionGroup | Where {$_.ModeratedBy -notlike "$null"} | FT DisplayName,ManagedBy显示从本地 Active Directory 同步的所有通讯组
PowerShell 命令示例:
Get-DistributionGroup | Where {$_.IsDirSynced -eq $true} | FT DisplayName, IsDirSynced显示接受来自外部收件人的电子邮件的通讯组
PowerShell 命令示例:
Get-DistributionGroup | Where {$_.RequireSenderAuthenticationEnabled -eq $True} | FT DisplayName,RequireSenderAuthenticationEnabled显示不接受来自外部收件人的电子邮件的通讯组
PowerShell 命令示例:
Get-DistributionGroup | Where {$_.RequireSenderAuthenticationEnabled -eq $False } | FT DisplayName,RequireSenderAuthenticationEnabled获取有关特定用户的通讯组成员身份的信息
PowerShell 命令示例:
$User = read-host “User Name"
$UserDName = (Get-Mailbox $User).name
"The User " + $User + " is a member of the following Distribution Groups:"
ForEach ($DistributionGroup in Get-Distributiongroup -resultsize unlimited) {
if ((Get-Distributiongroupmember $DistributionGroup.identity | select -expand name) -contains $UserDName)
{ $DistributionGroup.name }
}5. 从通讯组中删除成员
如果您想获得有关使用 PowerShell 进行通讯组管理以及“删除通讯组和成员、转换通讯组类型等”主题的更多详细信息,您可以阅读文章在 Office 365 中使用 PowerShell 管理通讯组 |删除通讯组和成员|转换通讯组。
删除(移除)通讯组
要删除现有的通讯组,我们使用以下 PowerShell 命令。
PowerShell命令语法:
Remove-DistributionGroup "<Distribution Group Name>"PowerShell 命令示例:
Remove-DistributionGroup "Sales USA"从通讯组中删除成员
PowerShell命令语法:
Remove-DistributionGroupMember -Identity "<Distribution Group name>" -Member "<Member name>"PowerShell 命令示例:
Remove-DistributionGroupMember -Identity "Sales USA" -Member "Bob"从他所属的所有通讯组中删除用户
PowerShell 命令示例:
$DistributionGroups = Get-Distributiongroup -resultsize unlimited
$UserDName = read-host “Enter User Name"
$UserDName = (Get-Mailbox $User).name
"Searching which groups " + $User + " is a member of and removing membership..."
ForEach ($Group in $DistributionGroups) {
if ((Get-Distributiongroupmember $Group.Name | select -expand name) -contains $UserDName) {
write-host "Removing user from group '$Group'"
Remove-DistributionGroupMember -Identity "$Group" -Member "$UserDName" -Confirm:$false
}
}从通讯组中删除所有成员
PowerShell 命令示例:
$DistributionGroupMember = Get-DistributionGroupMember "IT"
ForEach ($member in $DistributionGroupMember) {
Remove-DistributionGroupMember -Identity IT -Member $member.name -Confirm:$false
}其他通讯组管理任务 |技巧和窍门
将成员从通讯组复制到安全组
PowerShell 命令示例:
$Members = Get-DistributionGroupMember -id "<Name of the source group>"
ForEach ($Member in $Members) {
Add-DistributionGroupMember -Identity "<Name of the destination security group>" -Member $Member.name
}提取分发组成员并为每个组成员分配完全访问权限
PowerShell 命令示例:
$DistributionGroupName = Get-DistributionGroupMember "Sales France"
ForEach ($Member in $DistributionGroupName) {
Add-MailboxPermission -Identity "Bradp" -User $Member.name -AccessRights ‘FullAccess’ -InheritanceType all
}就是这样!
所查看的所有 PowerShell 命令都包含在 Distribution list.ps1 PowerShell 脚本中。


