我正在尝试弄清楚如何在 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('#', '[#]'))