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

[玩转系统] 使用“ForEach”PowerShell 命令通过数组创建循环 |基本介绍 |第 1 部分#2

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

使用“ForEach”PowerShell 命令通过数组创建循环 |基本介绍 |第 1 部分#2


在本文中,我想对基于 PowerShell 的环境(特别是基于 Office 365 和 Exchange Online 的环境)中的“Array”和“ForEach 语句”的概念进行基本介绍。

使用“ForEach”PowerShell 文章系列创建通过数组的循环

通过数组创建循环使用“ForEach”PowerShell 文章系列包括以下文章:

  1. 使用“ForEach”PowerShell 命令通过数组创建循环 |基本介绍 |第 1#2 部分(本文)
  2. 使用“ForEach”语句和变量创建通过数组的循环 | PowerShell环境|第 2 部分#2

PowerShell 循环和数组

数组和循环过程(通过使用 PowerShell“ForEach 语句”实现)的组合是一个非常强大的工具,它使我们能够“单击”对多个对象执行批量管理任务。

“问题”(如果我们想使用更政治正确的词,或者是挑战)是,大多数 Exchange 或 Office 365 管理员都对“PowerShell 怪物”感到有点害怕,尤其是更“复杂的场景”,其中我们需要使用包含多于一行的 PowerShell 命令。

好消息是,如果您准备花一点时间阅读以下两篇文章,您会发现术语“数组”、循环过程和“ForEach语句”并不那么可怕。

在您学习如何“注册”此工具后,您将获得一个非常有用的工具,可以改进和优化您的日常管理任务!

一般来说,“数组”的概念与任何编程或脚本语言相关,但如前所述,在当前文章中,示例与 Office 365 环境相关。

关于“数组”要了解什么

在PowerShell环境中,无论我们是否知道,我们多次使用“数组”的概念。如果我们想要更好地理解许多 PowerShell 命令语法示例,并有效地利用“PowerShell”,我们应该对“数组”概念有一个基本的了解。

数组的含义是什么?

让我们从术语“数组”的正式定义开始:

在计算机科学中,数组类型是一种数据类型,用于描述元素(值或变量)的集合,每个元素由一个或多个索引(标识键)选择,这些索引可以由程序在运行时计算。这样的集合通常称为数组变量、数组值或简称为数组。

类比向量和矩阵的数学概念,具有一个和两个索引的数组类型通常分别称为向量类型和矩阵类型。

简而言之,术语“数组”定义了我们在使用 PowerShell 命令时可以“寻址”或与之相关的一组或“对象”列表。

[玩转系统] 使用“ForEach”PowerShell 命令通过数组创建循环 |基本介绍 |第 1 部分#2

数组被视为对象的集合或其他术语 - 成员的集合。

理论上,数组可以为空,也可以包含零个成员,但大多数时候,我们使用“数组”来分组或“绑定”一个或多个“对象”。

[玩转系统] 使用“ForEach”PowerShell 命令通过数组创建循环 |基本介绍 |第 1 部分#2

下一个可能出现的问题是——这些“对象”是什么或者这些“成员”是谁?

[玩转系统] 使用“ForEach”PowerShell 命令通过数组创建循环 |基本介绍 |第 1 部分#2

术语“对象”或“成员”是一个非常通用的术语,我们用来描述我们想要解决的不同类型的“实体”。

在基于 PowerShell 的环境中,术语“对象”有多个示例。

例如,一个对象可以被视为 Exchange 邮箱、Office 365 用户、操作系统进程甚至文件中的“行”。

[玩转系统] 使用“ForEach”PowerShell 命令通过数组创建循环 |基本介绍 |第 1 部分#2

数组可以包含 100% 的特定类型的对象,或者具有特定字符或特定属性的特定对象的“子集”。

例如:

PowerShell 命令Get-Mailbox 将获取所有 Exchange 邮箱的列表。

换句话说,我们可以说 PowerShell 命令 Get-Mailbox 创建了一个数组,其中包含所有被视为“邮箱对象”的对象。

以下 PowerShell 命令将获取所有被视为“用户邮箱”的 Exchange Online 邮箱的列表。

Get-Mailbox | Where {$_.RecipientTypeDetails -eq "UserMailbox"}

换句话说,在这种情况下,创建的数组仅包含 Exchange 邮箱的特定子集或“组”,这些邮箱具有特定属性 RecipientTypeDetails,并被视为用户邮箱。

数组是如何创建的

[玩转系统] 使用“ForEach”PowerShell 命令通过数组创建循环 |基本介绍 |第 1 部分#2

我们可以问的另一个有趣的问题是——我们可以使用哪些方法来创建“数组”?

“创建”数组的方法有多种。

  1. 使用基本的 PowerShell 命令 - 例如,每个以前缀 Get 开头的 PowerShell cmdlet 创建一个数组。
  2. 以特定格式存储在文件中的信息,例如CSV文件,也可以被视为“数组”。当我们需要访问存储在 CSV 文件中的信息时,CSV 文件中的每个“行”都将被视为“数组成员”,而 CSV 文件中的每一列将被视为“成员属性”。
  3. 使用组——虽然我们不习惯将“组”视为“数组”,但组实际上是一个数组。 “组”作为包含组成员的逻辑容器,这就是数组的确切定义。
  4. 手动写入每个成员——创建“数组”的另一种方法是通过手动写入每个数组成员来简单地实现。例如,当我们为特定用户邮箱分配权限时,我们可以为多个用户(Array)分配权限。 “数组”的创建是通过写下来实现的,每个用户(成员)之间用逗号分隔。

用于创建数组的 PowerShell 命令

在本节中,我想将 PowerShell 命令前缀 Get 作为我们创建“数组”的主要方法之一。

每次我们运行带有前缀 Get 的 PowerShell 命令时,我们都会要求 PowerShell 创建一个“数组”。

[玩转系统] 使用“ForEach”PowerShell 命令通过数组创建循环 |基本介绍 |第 1 部分#2

默认情况下,“数组内容”将通过PowerShell命令显示在PowerShell控制台上,但需要强调的是,PowerShell命令实现的第一个“动作”是——将“数组数据”存储在计算机RAM中,然后将信息复制到 PowerShell 控制台。

除了在PowerShell控制台中查看“数组数据”之外,我们还可以使用存储在RAM中的数组信息并选择我们想要对数据“做什么”。

例如,我们可以将数组信息导出到文件中,通过“管道”将信息导出到另一个PowerShell命令等等。

使用 PowerShell Get-Mailbox 命令创建数组的示例

Exchange 基础结构包括数十甚至数百种不同的对象类型,例如 Exchange 收件人、组、连接器、邮箱等。

当我们使用 PowerShell cmdlet(例如 Get-Mailbox)时,我们要求 Exchange Online 向我们提供有关非常特定的对象类型(“Exchange 邮箱”)的信息。

当我们编写 PowerShell Get-Mailbox 并“点击”回车键时,PowerShell 会自动创建一个“数组空间”,并用有关所有现有邮件的信息“填充”该数组存储。交换邮箱。

[玩转系统] 使用“ForEach”PowerShell 命令通过数组创建循环 |基本介绍 |第 1 部分#2

使用 PowerShell 创建数组的附加示例

我们使用 PowerShell 命令创建的数组的另一个示例可以是我们使用以下 PowerShell 命令创建过滤搜索的示例,例如:

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

在这种情况下,我们“要求”Exchange 向我们提供所有 Exchange 用户的列表(Exchange Online 用户的数组),但添加一个额外的过滤器,其中包含条件 - 仅当用户标题为 - 时才“获取信息” 管理员

[玩转系统] 使用“ForEach”PowerShell 命令通过数组创建循环 |基本介绍 |第 1 部分#2

在下一篇文章中,我们将研究使用“ForEach”语句和变量通过数组创建循环 | PowerShell环境|第 2 部分#2。

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

取消回复欢迎 发表评论:

关灯