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

[玩转系统] 在 Office 365 中使用 PowerShell 管理通讯组 |查看和导出有关通讯组的信息 |第 4 部分#5

作者:精品下载站 日期:2024-12-14 09:05:09 浏览:16 分类:玩电脑

在 Office 365 中使用 PowerShell 管理通讯组 |查看和导出有关通讯组的信息 |第 4 部分#5


本文是五篇文章系列中的第四篇文章,专门讨论使用 PowerShell 在基于 Office 365 和 Exchange Online 的环境中管理通讯组的主题。本文包括两个主要部分:

  1. 与查看有关通讯组设置、通讯组成员等信息的需要相关的管理任务。
  2. 与导出有关通讯组的信息的需要相关的管理任务。

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

  • 在 Office 365 中使用 PowerShell 管理通讯组 | PowerShell 命令参考 |第 1 部分#5
  • 在 Office 365 中使用 PowerShell 管理通讯组 |创建新通讯组并管理现有通讯组 |第 2 部分#5
  • 在 Office 365 中使用 PowerShell 管理通讯组 |将成员添加到现有通讯组 |第 3 部分#5
  • 在 Office 365 中使用 PowerShell 管理通讯组 |查看和导出有关通讯组的信息 |第 4 部分#5
  • 在 Office 365 中使用 PowerShell 管理通讯组 |删除通讯组和成员|转换通讯组|第 5 部分#5

查看有关通讯组的信息

查看所有现有通讯组的列表

要获取所有现有通讯组的列表,我们使用 PowerShell 命令:

显示所有通讯组列表+详细信息

PowerShell 命令示例:

Get-DistributionGroup

显示分发组成员

要获取所有通讯组成员的列表,我们使用以下 PowerShell 命令:

显示通讯组成员

PowerShell 命令语法

Get-DistributionGroupMember "<Distribution Group Name>"

PowerShell 命令示例:

Get-DistributionGroupMember "Sales France"

在以下示例中,我们“扩展”从基本 PowerShell 命令 Get-DistributionGroupMember 获取的信息。

在此示例中,我们要求 PowerShell 按“DisplayName”属性对结果进行排序,此外,还显示成员的以下属性 - DisplayName、Alias 和 Department

PowerShell 命令示例:

Get-DistributionGroupMember IT | Sort -Property DisplayName | Select DisplayName, Alias, Department

计算通讯组成员的数量

如果我们需要计算特定通讯组中的成员数量,请使用以下 PowerShell 命令。

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

显示有关在特定日期范围之前或之后更新的通讯组的信息

在某些情况下,我们需要获取在特定日期\时间创建的通讯组列表或在特定时间范围内创建的通讯组的列表。

例如:

  • 场景 1 - 我们希望将用户添加到在特定时间范围(过去两周)内创建的所有新通讯组。
  • 场景 2 - 我们希望将用户添加到在特定时间范围内创建的所有通讯组 - 过去两周之前创建的所有通讯组。

为了能够“知道”特定通讯组的创建时间,我们可以查询通讯组属性 - “WhenCreated”。

为了能够找到“属于”特定时间范围(例如过去两周或当前两周之前的时间)的分发组,我们需要使用 PowerShell 逻辑运算符。

在我们的示例中,我们创建两个 PowerShell 查询,它们将使用以下运算符 - ge 和 le,并获取以下信息:

  • 获取过去 2 周内(过去两周内)创建的通讯组列表。为此,我们使用 PowerShell 运算符 - ge(大于或等于)。
  • 获取过去 2 周之前创建的通讯组列表。为此,我们使用 PowerShell 运算符 - Le(小于或等于)。

为了能够定义两周的“时间范围”,我们将使用 PowerShell
cmdlet Get-Date,方法如下:(Get-Date).Adddays(-14)。

获取过去 2 周内创建的通讯组列表

PowerShell 命令示例:

Get-DistributionGroup | Where {$_.WhenCreated -ge ((Get-Date).Adddays(-14))} | FT DisplayName,WhenCreated

获取过去 2 周之前创建的通讯组列表。

PowerShell 命令示例:

Get-DistributionGroup | Where {$_.WhenCreated -le ((Get-Date). Adddays (-14))} | FT DisplayName,WhenCreated

显示所有者(由其管理)为用户 X 的所有通讯组

在此示例中,我们想要获取由特定用户管理的所有通讯组的列表。

获取 Adele 管理的所有通讯组的列表

PowerShell 命令示例:

Get-DistributionGroup | Where {$_.ManagedBy -like “*adele*”} | FT DisplayName,ManagedBy

显示所有有管理员的通讯组

在本例中,我们希望获取有关具有主持人的通讯组的信息。

为此,我们可以使用“简单的 PowerShell 命令”或更复杂的 PowerShell 命令。

在以下示例中,我们要求 PowerShell 获取所有现有通讯组的列表并提供以下属性 - 显示名称 + 属性 ModeatedBy。

将提供的信息将包括有主持人和没有主持人的通讯组。

PowerShell 命令示例:

Get-DistributionGroup | FT DisplayName,ModeratedBy

如果我们想要实现更多“精确搜索”,仅显示具有主持人的通讯组,我们可以使用以下 PowerShell 命令:

PowerShell 命令示例:

Get-DistributionGroup | Where {$_.ModeratedBy -notlike “$null”} | FT DisplayName,ManagedBy

显示从本地 Active Directory 同步的所有通讯组

在此示例中,我们想要获取被视为同步通讯组的所有通讯组的列表。

术语“同步通讯组”涉及在本地 Active Directory 中创建并通过使用目录同步服务器与 Exchange Online 同步的通讯组。

PowerShell 命令示例:

Get-DistributionGroup | Where {$_.IsDirSynced -eq $true} | FT DisplayName, IsDirSynced

显示有关投放管理的分发组信息

术语“传递管理”描述了与“允许的”发件人相关的设置。

发件人分为 2 组:

  1. 内部发件人(组织收件人),描述为经过身份验证的收件人。
  2. 外部发件人(非组织收件人),描述为未经身份验证的收件人。

在 Office 365 中,新通讯组的默认设置是“仅限我组织内部的发件人。 ”

换句话说,默认情况下,不允许外部收件人向 Exchange Online 通讯组发送电子邮件。

显示其传递管理允许外部收件人
发送电子邮件的通讯组

在此示例中,我们想要获取可以接受来自外部收件人的电子邮件的所有通讯组的列表。

定义此选项的参数是 - RequireSenderAuthenticationEnabled

如果参数 RequireSenderAuthenticationEnabled 的值为 $True,则表示通讯组将接受来自外部(非组织)收件人的电子邮件。

显示接受来自外部收件人的电子邮件的通讯组

PowerShell 命令示例:

Get-DistributionGroup | Where {$_.RequireSenderAuthenticationEnabled -eq $True} | FT DisplayName,RequireSenderAuthenticationEnabled

显示其传送管理不允许外部收件人发送电子邮件的通讯组

在此示例中,我们想要获取所有不能接受来自外部收件人的电子邮件的通讯组的列表。

定义此选项的参数是 - RequireSenderAuthenticationEnabled

如果参数 RequireSenderAuthenticationEnabled 的值为 $True,则表示通讯组将接受来自外部(非组织)收件人的电子邮件。

显示不接受来自外部收件人的电子邮件的通讯组

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}
}

导出有关通讯组的信息

我描述的“导出有关分发组的信息”部分可以被视为我们使用 PowerShell cmdlet“Get-DistributionGroup”或“Get-DistributionGroupMember”来获取有关分发组基础结构的信息的部分的“衍生”部分(获取现有通讯组的列表,获取有关组成员身份的信息等)。

我们可以在 PowerShell 控制台上显示的每条信息也可以“导出”为各种类型的文件格式。

文件格式和导出 PowerShell cmdlet

PowerShell 支持将 PowerShell 命令输出导出为以下文件格式的选项:文本、CSV、HTML 和 XML。

为了能够导出所需的信息,我们需要告诉 PowerShell 我们要使用的“文件格式”是什么。

除了定义特定文件格式的 PowerShell cmdlet 之外,PowerShell 还为每种文件类型提供专用的“导出命令”,并为特定文件类型提供唯一的参数。

例如,当我们希望将 PowerShell 命令输出导出为 CSV(逗号分隔值)文件格式时,我们可以添加其他参数,例如:

  • -NoTypeInformation - 此选项可防止 PowerShell 将不必要的信息添加到 CSV 文件中
  • -编码UTF8——如果用户、邮箱等对象包含非英文字符,我们可以添加这个“格式参数”,使PowerShell导出包含非英文字符的信息。

“路径”参数

当我们想要将 PowerShell 命令输出中的信息导出到文件时,我们需要向 PowerShell 提供确切的路径和文件名。

导出数据的 PowerShell 命令将使用“路径信息”在指定路径中创建新文件。

[玩转系统] 在 Office 365 中使用 PowerShell 管理通讯组 |查看和导出有关通讯组的信息 |第 4 部分#5

值得一提的是,当我们提供路径(例如 C:\Temp)时,PowerShell 命令“例外”该路径已创建。换句话说,默认情况下,PowerShell 命令不会“为我们创建”路径中指定的特定文件夹。

用于将信息导出到各种文件类型的 PowerShell 语法示例

以下部分包括将 PowerShell 命令输出导出为三种类型文件格式的演示。

为了演示各种文件格式,我们使用 PowerShell 命令 - Get-DistributionGroup,顾名思义,获取有关现有分发组的信息,并默认在 PowerShell 控制台上显示该信息。

在我们的场景中,我们希望更改此默认行为,而不是在 PowerShell 控制台上显示信息,而是希望将 PowerShell 命令输出“重定向”到“File.txt”。 ”

将信息导出到 TextFilePowerShell 命令示例:

Get-DistributionGroup | Out-File c:\temp\DistributionGroups.TXT

将信息导出到 CSVFilePowerShell 命令示例:

Get-DistributionGroup | Export-CSV c:\temp\DistributionGroups.CSV -NoTypeInformation -Encoding UTF8

将信息导出到 HTML 文件

PowerShell 命令示例:

Get-DistributionGroup | ConvertTo-Html c:\temp\DistributionGroups.HTML

将有关通讯组成员的信息导出到文件的任务可能看起来像一个简单的任务,但此任务需要对我们使用的 PowerShell 语法进行一些“操作”。
可用于导出的 PowerShell 命令语法示例SCV 文件中有关通讯组成员的信息可以是:

将有关通讯组成员的信息导出到 csv 文件

PowerShell 命令示例:

$Groups = Get-DistributionGroup -ResultSize Unlimited 
Foreach ($Group in $Groups) 
{ 
 $Members = Get-DistributionGroupMember -Identity $($Group.PrimarySmtpAddress) 
 Foreach ($Member in $Members) 
 { 
 Out-File -FilePath c:\temp\DistributionGroupMember.csv -InputObject "$($Group.DisplayName),$($Member.DisplayName),$($Member.PrimarySMTPAddress)" -Encoding UTF8 -append 
 } 
}

当前文章系列的下一篇文章

  • 在 Office 365 中使用 PowerShell 管理通讯组 |删除通讯组和成员|转换通讯组|第 5 部分#5

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

取消回复欢迎 发表评论:

关灯