排除基于关键字的任何发现

Exclude any findings based off the keyword

https://blog.malwarebytes.com/101/2015/07/introduction-to-alternate-data-streams/

中找到了一行有用的代码
gci -Recurse | % { gi $_.FullName -Stream * } | where stream -ne ':$Data'

我已经有一段时间没有接触 PowerShell 了,所以我想弄清楚如何包含一个 -Exclude 函数来缩小它提供给我的输出。对象的一个​​元素称为 "Stream",当它找到字符串 "Zone.Identifier" 时,我希望排除该对象(整个事情,而不仅仅是那一行)。下面是一个输出示例。

我尝试了以下但没有成功。

gci -Recurse | % { gi $_.FullName -Stream * -Exclude "Zone.Identifier" } | where stream -ne ':$Data'

-notin 运算符与 where 一起使用:

gci -recurse | % { gi $_.FullName -stream *  } | where stream -notin ':$Data','Zone.Identifier'

您也可以完全跳过 %ForEach-Object 的别名)并将项目直接传送到 Get-Item:

Get-ChildItem -Recurse |Get-Item -Stream * |Where-Object Stream -notin ':$Data','Zone.Identifier'

(扩展了别名以提高可读性)