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

[玩转系统] 如何在 PowerShell 中使用逻辑运算符

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

如何在 PowerShell 中使用逻辑运算符


运行命令会为您提供许多结果作为输出。这可能是压倒性的。最好编写带有逻辑运算符的脚本以获得准确的结果。逻辑运算符有助于组合条件、过滤结果等等。在本文中,您将学习如何在 PowerShell 中使用逻辑运算符。

PowerShell 逻辑运算符

逻辑运算符连接表达式和语句,允许您使用单个表达式来测试多个条件。

以下列表显示可用的 PowerShell 逻辑运算符。

Logical Operator-not-and-or-xor

连接到 Exchange Online PowerShell

为了能够运行 PowerShell 命令并使用逻辑运算符,您必须首先连接到 Exchange Online PowerShell。以管理员身份打开 Windows PowerShell,运行以下 cmdlet,然后使用管理员凭据登录。

Connect-ExchangeOnline

PowerShell 逻辑运算符结构

我们将与逻辑运算符一起使用的另一个组件是Where-Object。

Where-Object cmdlet 与逻辑运算符相结合,使我们能够创建描述所需条件的 PowerShell 语句。在接下来的示例中,我们将使用 Where-Object 的简化版本,即 Where cmdlet。

我们将展示如何在特定条件下执行 PowerShell 句子结构。

PowerShell句子结构:

  1. 在 PowerShell 语句的第一部分中,我们将使用 Get-Mailbox cmdlet 和 -ResultSize Unlimited 来查找所有现有邮箱类型。
  2. 我们使用管道 (|) 从第一部分获取输入,并在第二部分中对其进行处理。
  3. 在 PowerShell 句子的第二部分中,我们将使用 Where cmdlet。
  4. 条件必须用大括号括起来 { }

    • $_. 符号用于表示默认对象
  5. 使用逻辑运算符-not
  6. 指定属性名称
  7. 在双引号 () 中指定

请参阅下面的 PowerShell 语法示例。

Get-Mailbox -ResultSize Unlimited | Where {-not $_.Property -eq "Value"}
  1. 然后,您可以使用管道 (|) 和 Select cmdlet 添加其他部分来指定将显示的属性。

具有选择属性的 PowerShell 命令语法示例。

Get-Mailbox -ResultSize Unlimited | Where {-not $_.Property -eq "Value"} | Select Property1, Property2

PowerShell 逻辑运算符示例

在 PowerShell 中使用逻辑运算符有无限的可能性。我们将向您展示使用逻辑运算符和比较运算符 -eq (=equals) 的不同示例。

1. 逻辑运算符-not

我们想要显示不在销售部门工作的所有 Microsoft 365 用户的列表。为了实现这个要求,我们需要使用比较运算符(-eq)和逻辑运算符(-not)的组合。

[玩转系统] 如何在 PowerShell 中使用逻辑运算符

  1. 在 PowerShell 语句的第一部分中,我们将使用 Get-User cmdlet。我们需要添加-ResultSize Unlimited命令来获取所有现有用户的列表。第一部分的输出通过管道传输到 PowerShell 命令的第二部分。
  2. 在 PowerShell 句子的第二部分中,我们将使用 Where cmdlet,后跟大括号 { } 中的条件。
  3. 该条件将使用逻辑运算符-not
  4. 比较运算符 -eq 用于匹配来自销售部门的用户。

运行以下 PowerShell 命令示例。

Get-User -ResultSize Unlimited | Where {-not ($_.Department -eq "Sales")} | Select Name, RecipientType, Department

PowerShell 输出结果显示所有部门,但不显示销售部门。

Name                                 RecipientType Department
----                                 ------------- ----------
41377e9c-dc47-46c0-b4a5-1d5bbdcb5cc5 UserMailbox   Marketing
c32b2b27-d809-439a-a3e3-eb7a749eeb72 UserMailbox   IT
5cae3874-442b-459c-8f33-3aee5b879275 UserMailbox   Marketing
411a8f10-0dfa-4034-a1e3-a8b6e4cad2f6 UserMailbox   IT
e5c3a5e8-eeae-4829-94dc-fb7228bcf8da UserMailbox   IT
4631b453-3a0a-439e-a2ea-7af2b9a741b3 User          Finance
7545348c-b473-45b5-890d-38bc59b4a163 User          Finance
0f38d53f-cbe0-4844-86e9-1032a45ba31b UserMailbox   Marketing

2. 逻辑运算符-and

您可以使用逻辑运算符 -and 在 PowerShell 命令中组合两个或多个条件。

我们想要显示在销售部门工作的所有 Microsoft 365 用户的列表,标题应为经理

[玩转系统] 如何在 PowerShell 中使用逻辑运算符

对于每个条件,我们将使用的比较运算符是-eq。我们将使用的逻辑运算符是-and,因为用户应该同时匹配这两个条件。

运行 PowerShell 命令语法。

Get-User -ResultSize Unlimited | Where {($_.Department -eq "Sales") -and ($_.Title -eq "Manager")} | Select Name, RecipientType, Department

PowerShell 输出将显示在销售部门工作并具有经理头衔的用户。

Name                                 RecipientType Department
----                                 ------------- ----------
f8261d51-3df9-4f21-a6b1-533412669c11 User          Sales
0de964ae-f09a-4e65-bc8c-cbeac2745e4c User          Sales

3. 逻辑运算符-or

我们想要显示来自销售部门的所有 Microsoft 365 用户或来自任何部门的具有经理头衔的用户的列表。为了实现这个要求,我们需要使用比较运算符(-eq)和逻辑运算符(-or)的组合。

[玩转系统] 如何在 PowerShell 中使用逻辑运算符

  1. 在 PowerShell 语句的第一部分中,我们将使用 Get-User cmdlet,后跟 -Resultsize Unlimited
  2. 在 PowerShell 句子的第二部分中,我们将使用 Where cmdlet,后跟大括号 { } 中的两个条件。
  3. 对于每个条件,您需要使用括号( )
  4. 在第一个条件中,我们将使用比较运算符-eq来匹配来自销售部门的用户。
  5. 在第一个条件之后,我们将使用逻辑运算符-or
  6. 第二个条件将使用比较运算符 -eq 来匹配标题为 Manager 的用户。

运行 PowerShell 命令语法。

Get-User -ResultSize Unlimited | Where {($_.Department -eq "Sales") -or ($_.Title -eq "Manager")} | Select Name, RecipientType, Department, Title

PowerShell 输出将显示销售部门的用户或具有经理头衔的用户,或两者兼而有之。

Name                                 RecipientType Department Title
----                                 ------------- ---------- -----
fa956d8c-87df-4cd4-ac2a-ac1f3d7cac8b User          Sales
b602b148-2fcf-435a-9d34-ce72c3a8c748 UserMailbox   Sales
1e367b85-f0c0-4c9c-a16a-22d132f1d8e6 UserMailbox              Manager
f8261d51-3df9-4f21-a6b1-533412669c11 User          Sales      Manager
7bfec79d-7806-484a-ac83-133cd4cf5af5 User                     Manager
bc741ead-e704-4eb9-a9e8-adfa1f187c92 User          Sales
0de964ae-f09a-4e65-bc8c-cbeac2745e4c User          Sales      Manager
411a8f10-0dfa-4034-a1e3-a8b6e4cad2f6 UserMailbox   IT         Manager
27c03114-f9a1-4c02-83ef-bd4ee32f00cf User          Sales
82cd0d62-e974-4892-aca6-e0387abc62be UserMailbox   Sales      Member
52a6c1c7-77d2-4109-99b9-a4076167b6e2 UserMailbox   Sales
0f38d53f-cbe0-4844-86e9-1032a45ba31b UserMailbox   Marketing  Manager

4. 逻辑运算符-xor

我们希望显示在销售部门工作或职位为经理的所有 Microsoft 365 用户的列表,但不能同时显示两者。为了实现这个要求,我们需要使用比较运算符(-eq)和逻辑运算符(-xor)的组合。

[玩转系统] 如何在 PowerShell 中使用逻辑运算符

它类似于逻辑运算符-or,但它不会显示来自销售部门的标题为经理的用户。

请参阅 PowerShell 命令语法。

Get-User -ResultSize Unlimited | Where {($_.Department -eq "Sales") -xor ($_.Title -eq "Manager")} | Select Name, RecipientType, Department, Title

PowerShell 输出将显示销售部门或具有经理头衔的用户,但不会同时显示两者。

Name                                 RecipientType Department Title
----                                 ------------- ---------- -----
fa956d8c-87df-4cd4-ac2a-ac1f3d7cac8b User          Sales
b602b148-2fcf-435a-9d34-ce72c3a8c748 UserMailbox   Sales
1e367b85-f0c0-4c9c-a16a-22d132f1d8e6 UserMailbox              Manager
7bfec79d-7806-484a-ac83-133cd4cf5af5 User                     Manager
bc741ead-e704-4eb9-a9e8-adfa1f187c92 User          Sales
411a8f10-0dfa-4034-a1e3-a8b6e4cad2f6 UserMailbox   IT         Manager
27c03114-f9a1-4c02-83ef-bd4ee32f00cf User          Sales
82cd0d62-e974-4892-aca6-e0387abc62be UserMailbox   Sales      Member
52a6c1c7-77d2-4109-99b9-a4076167b6e2 UserMailbox   Sales
0f38d53f-cbe0-4844-86e9-1032a45ba31b UserMailbox   Marketing  Manager

5. 组合逻辑运算符 -or -and

我们希望显示在销售营销部门工作、标题为经理的所有 Microsoft 365 用户的列表。

[玩转系统] 如何在 PowerShell 中使用逻辑运算符

多个条件的组合应该用大括号{ }括起来:

  • 对于括号 ( ) 中的每个条件,我们将使用的比较运算符是 -eq
  • 我们将使用的第一个逻辑运算符是-or,因为它可能是来自销售营销部门的用户。
  • 我们将使用的第二个逻辑运算符是-and,因为用户应该同时具有经理头衔。

运行以下 PowerShell 命令语法。

Get-User | Where {($_.Department -eq "Sales") -or ($_.Department -eq "Marketing") -and ($_.Title -eq "Manager")}

PowerShell 输出将显示销售营销部门中标题为经理的所有用户。

Name                                 RecipientType Department Title
----                                 ------------- ---------- -----
f8261d51-3df9-4f21-a6b1-533412669c11 User          Sales      Manager
0de964ae-f09a-4e65-bc8c-cbeac2745e4c User          Sales      Manager
0f38d53f-cbe0-4844-86e9-1032a45ba31b UserMailbox   Marketing  Manager

就是这样!

了解更多:使用 Microsoft Graph PowerShell 导出 Azure AD 用户 »

结论

您学习了如何在 PowerShell 中使用逻辑运算符来提高命令的效率。向命令或 PowerShell 脚本添加逻辑运算符将根据您的需要过滤结果。

您喜欢这篇文章吗?您可能还喜欢配置基于证书的身份验证来运行自动化 PowerShell 脚本。不要忘记关注我们并分享这篇文章。

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

取消回复欢迎 发表评论:

关灯