【问题标题】:Why doesn't Find-String work on the output from Powershell commands?为什么 Find-String 不适用于 Powershell 命令的输出?
【发布时间】:2021-05-26 23:57:04
【问题描述】:

我不知道这是否是更大的 Powershell 库命令集的问题,但我现在正在使用 Share Point Online 库并且无法使其工作:

Get-SPODeletedSite | Select-String "100060-24"

如果我只输入“Get-SPODeletedSite”,我可以看到该字符串存在于输出中,但是当我尝试过滤仅包含该文本的行时,它会显示为空。这里发生了什么?这是一个基本的管道操作。

【问题讨论】:

  • 根据文档:“在字符串和文件中查找文本。”因此,如果您对 Get-SPODeletedSite 的输出执行 get-member 操作,会返回什么类型的对象?
  • 一个结构数组,我想。但在某些时候,这些结构会转换为字符串以便显示在控制台上。
  • 但是您没有过滤控制台显示,而是过滤了结构。
  • 我不想过滤结构。我想过滤控制台显示。为什么这对 Powershell 来说是一项困难的操作?

标签: select-string


【解决方案1】:

PowerShell 是一种面向对象的语言。因此,它旨在与对象(结构)一起使用。 PS 有关于如何在屏幕上显示对象的内置说明,但这仅用于显示目的。这是我能提供的最好的解释。也许对 PS 有更全面了解的人可以提供更好的解释。

【讨论】:

  • 看,作为一名程序员,我了解能够查询和操作数据结构的实用性。作为一名 shell 程序员,我也了解能够 grep 操作输出的实用性。 Powershell 中必须有一些实用程序可以将结构转换为 greppable 输出。
  • 此外,我们可以将输出通过管道传输到文件,但不能通过过滤器,这是不合逻辑的。
  • 夸克利,见这篇 MS 文章:docs.microsoft.com/en-us/powershell/module/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-11
  • 2015-04-29
  • 1970-01-01
  • 2015-10-16
  • 1970-01-01
  • 2021-03-11
  • 1970-01-01
相关资源
最近更新 更多