Amazon.EC2.Model.Filter 逆向搜索

Amazon.EC2.Model.Filter inverse search

我正在尝试获取所有 在名为 Name 的标签的值中包含单词 "public" 的 NACL。

我在这个页面上看到 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Filtering.html 可以执行反向搜索。

但是,我尝试的一切都失败了。

例如, 我声明对象和标签:

        $inverseNameFilter = new-object Amazon.EC2.Model.Filter
        $inverseNameFilter.name = 'tag:Name'

然后这些是我收到的结果,对于我尝试过的各种方法:

        $inverseNameFilter.Value = '!public'
        (Get-EC2NetworkAcl -region $region -filter $inverseNameFilter).count

结果:0

        $inverseNameFilter.Value = '!*public*'
        (Get-EC2NetworkAcl -region $region -filter $inverseNameFilter).count

结果:0

        $inverseNameFilter.Value = '*public*'
        (Get-EC2NetworkAcl -region $region -filter $inverseNameFilter).count

结果:3 (所以显然有三个名称标签包含 public 的 NACL)

        (Get-EC2NetworkAcl -region $region).count

结果:18 (所以这个地区显然有18个NACL)

如何进行逆向搜索以找到不包含单词 "public" 的 15 个 NACL?

看起来过滤器实际上并不支持否定(参见 Mathias R. Jessen 的评论)

但是,我找到了一种使用此 PowerShell 过滤而不是 AWS 过滤来排除结果的方法。这意味着处理发生在客户端而不是 AWS,但给了我足够的结果:

(Get-EC2NetworkAcl -region $region | Where-Object -FilterScript { ([string]$_.tags.Value) -notmatch "public"}).count

15