过滤和隔离 PowerShell 对象

Marion Paul Kenneth Mendoza 2023年1月30日
  1. PowerShell 对象概述
  2. 使用 PowerShell 过滤输出
过滤和隔离 PowerShell 对象

在 Windows PowerShell 中,执行 Get 请求时的大部分结果通常以 PowerShell 对象 (PSObject) 格式创建和显示。PSObjects 是 PowerShell 区别于其他脚本语言的关键功能之一。

但是,我们无法快速搜索 PSObject,因为它的属性,因此我们需要在建立搜索索引之前隔离属性。在本文中,我们将讨论 Windows PowerShell 对象、如何解析 PS 对象的结果以使结果可搜索,以及使用 PowerShell 执行适当的过滤。

PowerShell 对象概述

如前所述,PowerShell 对象是脚本语言的亮点之一。每个 PowerShell 对象都具有将对象定义为一个整体的属性。

我们以 Get-Service 为例。

示例代码:

Get-Service

输出:

Status   Name               DisplayName
------   ----               -----------
Running  AarSvc_147d22      Agent Activation Runtime_147d22
Running  AdobeARMservice    Adobe Acrobat Update Service
Running  AESMService        Intel® SGX AESM

Get-Service PowerShell 对象中,我们将 StatusNameDisplayName 作为它们的属性。要过滤掉对象,我们必须使用 Where-Object 命令在其属性之间隔离对象。

例如,我们只能获取 Status 类型或 Name 类型,但我们不能不先调用属性就只搜索特定关键字。

示例代码:

Get-Service | Where-Object {$_.Status -match "Stopped" }

输出:

Status   Name               DisplayName
------   ----               -----------
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
Stopped  AppIDSvc           Application Identity

在本文的下一部分中,我们将讨论如何将这些输出显示为字符串而不是 PS 对象格式,并使用不同的搜索查询执行过滤。

使用 PowerShell 过滤输出

为了快速过滤输出,我们需要以字符串格式显示输出。我们必须通过管道将命令传递给 Out-String 命令。

对于下面的示例,我们将它分配给一个变量,以便我们的下一个代码片段更容易。

示例代码:

$serviceOutput = (Get-Service | Out-String) -split "`r`n"

由于值存储在变量中,上面的代码不会产生结果。此外,我们还执行了一个小字符串操作,以每行划分结果行。

如果我们稍后过滤,脚本将逐行显示它,而不是只显示一个完整的字符串。

$serviceOutput 变量中存储的值采用字符串格式。要搜索关键字,我们需要将 Select-String 命令与我们希望搜索的关键字一起传递。

示例代码:

$serviceOutput | Select-String Intel

输出:

Running  AESMService        Intel® SGX AESM
Stopped  Intel(R) Capabi... Intel(R) Capability Licensing Servi...
Stopped  Intel(R) TPM Pr... Intel(R) TPM Provisioning Service
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

相关文章 - PowerShell Object