gpt4 book ai didi

powershell - 如何在powershell中使用字符串列表过滤列表

转载 作者:行者123 更新时间:2023-12-05 00:59:50 27 4
gpt4 key购买 nike

我有一个对象列表,并且想要过滤名称类似于列表中字符串之一的所有元素。我目前的方法是使用 where-object,但这会导致对 where-object 的一长串调用。

Get-AppxPackage |
where-object {$_.name -notlike "*store*"} |
where-object {$_.name -notlike "*MSPaint*"} ...

我想减少此处所需的样板,因为我希望字符串列表变得非常大。
我还希望能够在另一个输出上使用过滤器,这似乎我目前只能通过复制粘贴 where-object block 来实现。

最佳答案

您可以改用正则表达式 notmatch。这将更快执行。类似的东西

Get-AppxPackage | Where-Object {$_.name -notmatch 'store|MSPaint'} 

您可以从数组或通过读取文本文件来构建模式,而不是输入文字名称以 匹配。假设您在文本文件中有一个名称列表

store
MSPaint
...

然后您可以使用

将该文件作为数组读取
$list = Get-Content -Path "<PATH TO THE FILE>"

接下来结合这个列表来构建类似的模式

$pattern = (($list | ForEach-Object {[regex]::Escape($_)}) –join "|")

然后做

Get-AppxPackage | Where-Object {$_.name -notmatch $pattern} 

希望对你有帮助

关于powershell - 如何在powershell中使用字符串列表过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52152228/

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