检查通配符是否涵盖 powershell 中的给定路径

检查通配符是否涵盖 powershell 中的给定路径

我正在尝试弄清楚如何在 PowerShell 中测试命令行符号中的通配符是否会针对给定路径触发。为了清楚起见,我有这样的内容:

For ($exception in $Exceptions) {
    For ($path in $ListOfAllItems) {
        If (IsPartOfPath -Wildcard $exception -Path $path) {
            -- do something....
        }
    }
}

我遇到的问题是如何实现此IsPartOfPath功能。我尝试过简单的方法$path -imatch $wildcard,但不喜欢结果,因为它属于完整的 RegEx 语法。除了自己编写所有通配符检查外,在 PS 中还有其他奇特的方法吗?

我解决这个问题的方法是获取引用的资源路径$path并检查是否$exception引用相同的资源。但是我不知道在 PowerShell 中是否可以实现 :/

答案1

运算-like符可能正是您想要的。它不进行任何正则表达式比较,并且它*与 和配合使用?完全符合您的预期。它不区分大小写。

不幸的是,它确实有几个额外的功能:#匹配数字和方括号排列,例如[abc]匹配括号内的任意一个字符。它似乎具有与Get-ChildItem的过滤器和 VB.NET相同的语义Like操作员。

如果这些有问题,您可以在使用之前转义不需要的通配符-like

$path -like ($wildcard.Replace('[', '[[]').Replace('#', '[#]'))

相关内容