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

[玩转系统] 使用 PowerShell 管理通讯组 |办公室365

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

使用 PowerShell 管理通讯组 |办公室365


本文是五篇文章系列中的第一篇文章,专门讨论使用 PowerShell 在基于 Office 365 和 Exchange Online 的环境中管理通讯组的主题。

本文的目的是提供 PowerShell 命令索引的“精简版”,我们需要将其用于常见的分发组管理任务。

对于本文中的每个部分,例如创建新通讯组、管理现有通讯组以及向现有通讯组添加成员,我都有专门的单独文章。

在 Office 365 中使用 PowerShell 管理通讯组 |系列文章

如果 PowerShell 命令的“简短版本”对您来说不够,并且您需要更多信息或更多示例,我们邀请您阅读有关通过 PowerShell 文章系列进行分发组管理的具体文章。

该系列文章包括以下文章:

  1. 使用 PowerShell 管理通讯组 | Office 365(本文)
  2. 在 Office 365 中使用 PowerShell 管理通讯组 |创建和管理通讯组
  3. 在 Office 365 中使用 PowerShell 管理通讯组 |将成员添加到现有通讯组
  4. 在 Office 365 中使用 PowerShell 管理通讯组 |查看和导出有关通讯组的信息
  5. 在 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 "[email protected]" -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}

[玩转系统] 使用 PowerShell 管理通讯组 |办公室365

您可以下载我们在本文中用于演示目的的 CSV 文件。

2. 管理现有通讯组设置

如果您想获得有关使用 PowerShell 进行通讯组管理以及“管理通讯组”主题的更多详细信息,您可以阅读文章在 Office 365 中使用 PowerShell 管理通讯组 |创建和管理通讯组。

启用或禁用通讯组从外部发件人获取电子邮件

为了使外部收件人能够向 Exchange Online 通讯组发送电子邮件,我们将参数“RequireSenderAuthenticationEnabled”的值设置为 $False。

PowerShell命令语法:

Set-DistributionGroup "<Distribution Group Name>" -RequireSenderAuthenticationEnabled $False

PowerShell 命令示例:

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 "[email protected]"

通过从 CSV 文件导入信息来设置通讯组主电子邮件地址

在我们的示例中,CSV 文件名为 Distribution-Groups-information.csv

[玩转系统] 使用 PowerShell 管理通讯组 |办公室365

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='[email protected]','[email protected]','[email protected]'}

替换(删除)现有通讯组别名电子邮件

PowerShell 命令示例:

Set-DistributionGroup "Sales UK" -emailaddresses '[email protected]','[email protected]'

删除现有通讯组别名电子邮件地址

PowerShell命令语法:

Set-DistributionGroup "<Distribution Group name>" -EmailAddresses @{Remove='<Identity 1>','<Identity 2>'}

PowerShell 命令示例:

Set-DistributionGroup "Sales UK" -EmailAddresses @{Remove=' [email protected]','[email protected]'}

从 GAL(全局地址列表)隐藏通讯组

PowerShell命令语法:

Set-DistributionGroup "<Distribution Group Name>" -HiddenFromAddressListsEnabled $True

PowerShell 命令示例:

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 [email protected],[email protected]

定义通讯组主持人

PowerShell命令语法:

Set-DistributionGroup "<Distribution Group Name>" -ModeratedBy <E-mail address>, <E-mail address>

PowerShell 命令示例:

Set-DistributionGroup "Sales UK" -ModeratedBy [email protected],[email protected]

为通讯组发送外出回复

PowerShell命令语法:

Set-DistributionGroup "<Distribution Group Name>" -SendOofMessageToOriginatorEnabled $True

PowerShell 命令示例:

Set-DistributionGroup "Sales UK" -SendOofMessageToOriginatorEnabled $True

向通讯组分配“发送为”权限

PowerShell命令语法:

Add-RecipientPermission "<Distribution Group Name>" -Trustee <Identity> -AccessRights SendAs -Confirm:$False

PowerShell 命令示例:

Add-RecipientPermission "Sales UK" -Trustee Brad -AccessRights SendAs -Confirm:$False

3. 将用户添加到通讯组

如果您想获得有关使用 PowerShell 进行通讯组管理以及“向现有通讯组添加成员”主题的更多详细信息,您可以阅读文章在 Office 365 中使用 PowerShell 管理通讯组 |将成员添加到现有通讯组。

将用户(收件人)添加到通讯组

PowerShell命令语法:

Add-DistributionGroupMember "<Distribution Group Name>" -Member "<Identity>"

PowerShell 命令示例:

Add-DistributionGroupMember -Identity "Sales UK" -Member "Bradp"

从 CSV 文件导入通讯组成员

[玩转系统] 使用 PowerShell 管理通讯组 |办公室365

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 脚本中。

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

取消回复欢迎 发表评论:

关灯