【发布时间】:2021-11-10 00:09:11
【问题描述】:
目前在 4.0 版上。我很容易找到包含一个字符串的文件。尝试用不同行上的两个字符串做一些稍微复杂一点的事情并没有成功。问题显然是由于单独评估行的方式以及结果作为命令之间的对象传递的方式使得明显的解决方案不起作用。
# Works, so simple
Get-ChildItem | Select-String -Pattern "Test1" -List | Select Path
# Fail
Get-ChildItem | Select-String -Pattern "Test1.+Test2" -List | Select Path
# Fail
Get-ChildItem | Select-String -Pattern "Test1" -List | Select-String -Pattern "Test2" -List | Select Path
从概念上讲,这很简单,但我一直在寻找解决方案。在较新版本中可能更容易,但无法在所涉及的服务器上更新。我可以编写一个脚本来在 Python 中找到解决方案,但此时我想让 PowerShell 这样做是出于恶意。
了解每个命令返回的内容、如何获取底层对象数据、如何将该数据通过管道传输到后续命令等一直是我使用 PowerShell 时遇到的问题:(
【问题讨论】:
-
我没有要测试的版本 4,但我认为应该是一样的。第一:
Get-ChildItem前面不需要Select-String。您可以直接提供路径。第二:参数-Pattern采用模式数组。如果我做对了,它应该可以满足您的要求。 ;-) -
如果您的问题尚未得到完全解答,请考虑 accepting 提供答案或提供反馈。