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

[玩转系统] 使用 PowerShell“Where 语句”创建过滤搜索 | Office 365 和 Exchange Online 对象 |第 1 部分#3

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

使用 PowerShell“Where 语句”创建过滤搜索 | Office 365 和 Exchange Online 对象 |第 1 部分#3


当前的文章系列包括三篇专门讨论以下主题的文章:使用 PowerShell“查看”有关 Office 365 (Azure Active Directory) 和 Exchange Online 对象的信息。

  1. 第一篇文章包括对 PowerShell“Where 语句”的基本介绍,我们将其用作“过滤器”来获取有关具有特定字符的对象的信息。
  2. 第二篇文章包含许多示例 - 在 Office 365 (Azure Active Directory) 环境中过滤搜索结果。我提供的示例主要与“Office 365 对象”相关。
  3. 第三篇文章包含许多示例 - 在 Exchange Online 环境中过滤搜索结果。我提供的示例将与 Exchange Online“邮箱对象”以及 Exchange Online 不同类型的收件人相关。

使用 PowerShell 查看 Office 365 和 Exchange Online 对象 |系列文章

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

  1. 使用 PowerShell“Where 语句”创建过滤搜索 | Office 365 和 Exchange Online 对象(本文)
  2. 使用 PowerShell 查看 Office 365 对象
  3. 使用 PowerShell 查看 Exchange Online 对象

为什么我们需要创建过滤搜索?

管理任何基础设施的每个管理员的基本需求之一是能够查找(搜索)“特定对象”并对这些对象执行某些“操作”。

术语——“对象”。

在 Office 365 和 Exchange Online 中,术语“对象”可以翻译为各种类型的对象,例如 Azure Active Directory 用户帐户、Exchange Online 邮箱、公共文件夹、组等。

该术语 - 执行一些“操作”。

“执行某些动作”的含义也可以转化为无数的例子。

在大多数情况下,我们需要查找特定的“对象”,然后“在对象上”执行管理任务,例如:

  • 更新指定对象的某些属性。
  • 对指定对象启用特定功能。
  • 将有关指定对象的信息导出到文件,例如文本、CSV 和 HTML。

如何处理“过滤搜索”结果?

当我们使用 PowerShell 执行“过滤搜索”时,我们可以通过以下方式之一使用结果:

1.在 PowerShell 控制台上显示搜索结果

在这种情况下,我们的目的只是获得“问题”的“答案”,该答案将显示在 PowerShell 控制台上。例如,显示所有没有许可证的 Office 365、显示所有考虑“共享邮箱”的 Exchange Online 邮箱等等。

2.将搜索结果保存到变量中

在这种情况下,我们的目的是为“PowerShell 过滤搜索”中包含的每个对象“做一些事情”。

第一步是通过定义一个充当“临时存储”的 PowerShell 变量来实现,该变量将“保存”“PowerShell 过滤搜索”的结果。

在下一步中,我们要求 PowerShell“获取”“过滤搜索结果”数组中包含的每个对象,然后对每个对象“执行某些操作”。

例如

  1. 为没有许可证的 Office 365 用户创建“PowerShell 筛选搜索”。
  2. 将从“PowerShell Filtered Search”获得的信息存储在变量中。
  3. 使用其他 PowerShell 命令,该命令将“访问”存储在创建的变量中的信息,获取有关“用户帐户”的信息,并为每个 Office 365 用户分配 Office 365 许可证。

3.将搜索结果导出到各种类型的文件

在这种情况下,我们的目的是通过将信息导出为各种类型的文件格式(例如 TEXT、CSV 和 HTML)来保存从“PowerShell 筛选搜索”中获取的信息以供以后使用。

[玩转系统] 使用 PowerShell“Where 语句”创建过滤搜索 | Office 365 和 Exchange Online 对象 |第 1 部分#3

使用 PowerShellWhere-Object 语句创建“过滤搜索”

我们用于执行过滤搜索查询任务的工具是以下 PowerShell cmdlet。

Where-Object

注意:在当前的文章系列中,我们使用较短的形式 -Where(而不是Where-Object)。我们可以用来定义“Where 语句”的另一个选项是使用问号字符“?”而不是“Where”或“Where-Object”。

Where-Object PowerShell cmdlet 为我们提供了一种过滤其他 PowerShell cmdlet 返回的数据的方法。

在下图中,我们可以看到PowerShell命令的结构,它使用“Where语句”。 ”

1. “获取”特定对象信息的 PowerShell 命令

这是“获取”有关特定对象类型(例如 Azure Active Directory 用户或 Exchange Online 邮箱(编号 1))的信息的部分。

例如 - 获取邮箱

2.过滤器PowerShell“Where语句”

这是我们使用 PowerShell“Where 语句”来“过滤”从上一个命令获得的输出的部分(编号 2)。

如果我们想使用技术术语,我们可以使用上一个 PowerShell 命令的“管道”输出。

每个Where 语句都使用大括号开始并括起过滤条件。

3. “$”字符

$_ 符号(数字 3)用于表示默认对象(即通过管道传输的对象)。

换句话说,$_ 符号用于表示每个对象,这些对象包含在我们从过滤后的查询结果中获得的“对象数组”中。

4.我们寻找的具体财产

这是“Where 过滤器”使用的特定对象属性(编号 4)。

例如,获取 Exchange Online 邮箱,它们是“RecipientTypeDetails”属性,包括特定值。

另一个示例可能是 - 过滤有关“Department”属性包含特定值的用户的信息。

5. PowerShell 理解运算符

这是“Where 语句”(编号 5)使用的“条件”。条件是通过使用理解运算符来定义的,例如小于、等于、不等于等。

在下表中,我们可以看到有关PowerShell理解运算符的信息

-lt

少于

-le

小于或等于

-gt

比...更棒

-ge

大于或等于

-eq

等于

-ne

不等于

-like

喜欢;使用通配符进行模式匹配

6.具体数值

这是我们定义“包含”在对象属性中的特定值(数字 6)的最后一部分。

该值可以是日期、数字、文本字符串等。

例如,仅显示“Department”属性包含值“manager”的用户。

PowerShell“Where 语句”示例

在以下示例中,我们使用 PowerShell Where 语句”来获取有关特定类型的 Exchange Online 邮箱的信息。

要获取被视为“共享邮箱”的特定 Exchange Online 邮箱的列表,我们将使用以下 PowerShell 命令:

请注意,在此示例中,我们使用“FT”(文件表)格式“管道”显示的结果,并指示 PowerShell 仅显示对象的特定属性,例如 - 别名收件人类型详细信息

Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientTypeDetails -eq "SharedMailbox"} | FT Alias,RecipientTypeDetails

第一个 PowerShell 命令是:

Get-Mailbox -ResultSize Unlimited

此命令的结果是有关所有现有 Exchange Online 邮箱的信息。

在PowerShell命令的第二部分(出现在Pipe之后的部分),我们按如下方式使用PowerShellWhere语句”:

我们要求 PowerShell “查看结果”,我们在前面的步骤中获得(所有 Exchange Online 邮箱的数组),并“仅获取”满足以下条件的 Exchange Online 邮箱

属性名为“RecipientTypeDetails”的 Exchange Online 邮箱包含等于“共享邮箱”的值。

[玩转系统] 使用 PowerShell“Where 语句”创建过滤搜索 | Office 365 和 Exchange Online 对象 |第 1 部分#3

使用 PowerShell Where 语句”与变量组合

在下面的部分中,我想提供一个场景示例,其中我们使用 PowerShell“Where 语句”与变量的组合。

我们的使命是为以下场景提供解决方案:

为所有 Exchange 邮箱的 Exchange 用户分配完全访问权限,其用户标题为“管理员”。

在我们的示例中,我们希望向 Adele 提供对所有“经理邮箱”的完全访问权限。

第 1#5 部分 - 获取有关特定 Exchange 对象的信息

在我们的示例中,我们想要获取所有 Exchange Online 用户的列表。我们使用的 PowerShell 命令是:

Get-User

第 2#5 部分 - 使用“Where 语句”来过滤信息

在这一部分中,我们使用 PowerShell Where 语句来过滤结果,方法是仅获取有关职务等于 (eq) 为“Manager”的 Exchange 用户的信息。

Get-User | Where {$_.Title -eq "Manager"}

第 3#5 部分 - 创建变量,并存储信息和变量

在这一部分中,我们将创建一个变量,它将存储 Where 语句结果的结果。

我们定义的变量是$Managers(在PowerShell环境中,我们使用$字符来指定变量)。

PowerShell 命令将如下所示:

$Managers = Get-User | Where {$_.Title -eq "Manager"}

第 4#5 部分 - 使用 PowerShell ForEach 循环运算符

在此步骤中,我们使用 PowerShell ForEach“循环运算符”来声明我们要求 PowerShell 对每个数组成员(标题等于 Manager 的每个用户)执行某些操作。

存储在名为 $Managers 的变量中的信息被视为一个“数组”,结果中包含的每个用户都可以被视为“数组中的成员”。

我们将使用以下 PowerShell 语法:

Foreach ($Member in $Managers)

请注意,当使用ForEach 循环运算符时,我们使用了一个附加变量。在我们的示例中,我们定义了一个名为 $Member 的变量
该变量只是一个临时变量,用作逻辑盒,它将保存有关特定成员 的信息,我们从存储在名为 $Managers 的变量中的对象数组中获取。

第 5#5 部分 - 为每个数组成员执行所需的命令

在此步骤中,我们执行 PowerShell 命令,该命令将为数组中包含的每个“成员”的用户名 Adele 分配完全访问权限。

换句话说,我们为 Adele 分配对每个 Exchange Online 邮箱的完全访问权限,她的用户将其视为管理员

我们使用的 PowerShell 命令是:

Add-MailboxPermission "Adele" -User $Member.name -AccessRights FullAccess -InheritanceType All

请注意,我们没有关联特定的经理名称,而是使用带有属性“Name”的$Member 变量。

完整的 PowerShell 命令是:

$Managers = Get-User | Where { $_.Title -eq "Manager" }
Foreach ($Member in $Managers) {
    Add-MailboxPermission "Adele" -User $Member.name -AccessRights FullAccess -InheritanceType All
}

使用 PowerShell Where 语句”将特定数据导出到文件。

在上一节中,我想回顾一下选项 - 使用 PowerShell“Where 语句”将特定数据导出到文件。

最常用的文件格式:

  • 文本文件格式
  • CSV(逗号分隔值)文件格式
  • HTML 文件格式

在下图中,我们可以看到 PowerShell 命令的格式,用于将从过滤的搜索查询中获得的“结果”导出到各种文件类型。

[玩转系统] 使用 PowerShell“Where 语句”创建过滤搜索 | Office 365 和 Exchange Online 对象 |第 1 部分#3

将使用 PowerShell“Where 语句”运行“筛选的搜索查询”的 PowerShell 命令示例可以是我们向 PowerShell 请求的命令,以获取有关特定类型的 Exchange Online 邮箱的信息。

例如,Exchange Online 邮箱被视为“共享邮箱”,然后将信息导出为各种类型的文件格式。

在下一节中,我们可以看到用于将数据导出为各种类型的文件格式的 PowerShell 命令语法示例:

示例 1 - 将 PowerShell 筛选的搜索导出到文本文件。

Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientTypeDetails -eq "SharedMailbox"} | FT Alias,RecipientTypeDetails | Out-File c:\temp\file.txt

示例 2 - 将 PowerShell 筛选的搜索导出到 CSV 文件。

Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientTypeDetails -eq "SharedMailbox"} | FT Alias,RecipientTypeDetails | Export-CSV c:\temp\file.csv

示例 3 - 将 PowerShell 筛选的搜索导出到 HTML 文件。

Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientTypeDetails -eq "SharedMailbox"} | FT Alias,RecipientTypeDetails | ConvertTo-Html c:\temp\file.html

在下一节中,我们可以看到结果的示例。

在我的示例中,我以三种不同的文件类型导出搜索结果。每种文件类型格式都有其“优点”。

[玩转系统] 使用 PowerShell“Where 语句”创建过滤搜索 | Office 365 和 Exchange Online 对象 |第 1 部分#3

这是导出到文本文件的信息示例。

[玩转系统] 使用 PowerShell“Where 语句”创建过滤搜索 | Office 365 和 Exchange Online 对象 |第 1 部分#3

这是导出到 CSV 文件的信息示例。

使用CSV文件格式的好处是,我们可以使用Microsoft Excel等应用程序,这将帮助我们更方便地查看信息,过滤特定列等。

[玩转系统] 使用 PowerShell“Where 语句”创建过滤搜索 | Office 365 和 Exchange Online 对象 |第 1 部分#3

这是导出到 HTML 文件的信息示例。

使用 HTML 文件格式的优点是,它更适合“报告”,并且我们可以使用简单的 Web 浏览器显示导出的信息。

以下屏幕截图中显示的示例不是“标准 HTML”PowerShell 输出。 “原始HTML格式输出”是更基本的。

在我的示例中,我使用 PowerShell 脚本向 HTML 输出添加额外的设计格式。

如果您想使用这种更“设计的 HTML 输出”,您可以使用我已添加到本系列其他文章中的 PowerShell 脚本。

  • 使用 PowerShell 查看 Office 365 对象 |第 2 部分#3
  • 使用 PowerShell 查看 Exchange Online 对象 |第 3 部分#3

[玩转系统] 使用 PowerShell“Where 语句”创建过滤搜索 | Office 365 和 Exchange Online 对象 |第 1 部分#3

在下一篇文章中,我们将研究使用 PowerShell 查看 Office 365 对象。

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

取消回复欢迎 发表评论:

关灯