gpt4 book ai didi

Powershell:从程序的自定义输出中过滤掉特定值

转载 作者:行者123 更新时间:2023-12-02 18:35:03 25 4
gpt4 key购买 nike

有一个实用程序输出如下格式的一些数据:

PS C:\> C:\Users\abc\Desktop\Tools\testApp.exe -i
TestApp version 1.5, Copyright (c) 2021 ABC, Inc.


abcadxx an bn cn id name model xsize test p/n
======= == == == ==== =============== ============== ======= ==== ==============
0 09 00 00 73A0 Abc1x Abc10LX 10000 pass 113-D41LXT-011

在这种情况下,我想过滤掉 name 的值 Abc1x我试过 Select-Object -Property 'name' 但得到了

PS C:\> C:\Users\abc\Desktop\Tools\testApp.exe -i | Select-Object -Property 'name'

name
----

已尝试 ExpandProperty 但会引发错误。由于这是自定义输出,我怎样才能获得名称的值?

最佳答案

从 PowerShell 的角度来看,外部程序输出的是文本行(字符串)流不是< em>对象您可以访问其属性。

  • 如评论所述,如果您可以让外部程序输出结构化文本格式(通过特定于程序的参数),例如 CSV,您可以让 PowerShell 通过 cmdlet 将其转换为对象,例如 Import-Csv ,然后启用 OO 处理。

否则,您需要执行文本解析

  • Avshalom's helpful answer展示了如何将用于显示的文本输出转换为 CSV 格式,然后允许您将其解析为对象。

  • 如果您只对 name 列(第 6 个)中的一个 值感兴趣,您可以使用以下快捷方式:

(-split (C:\Users\abc\Desktop\Tools\testApp.exe -i)[-1])[5]
  • (C:\Users\abc\Desktop\Tools\testApp.exe -i)testApp.exe 的输出行收集在 array(假设有两个或多个输出行),[-1] 提取最后输出行,假设包含感兴趣的数据:

  • -split 的一元形式运算符将该行按空格拆分为多个字段,[5] 返回第 6 个字段。

关于Powershell:从程序的自定义输出中过滤掉特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68914674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com