Powershell 对多个筛选器使用-notmatch

Powershell 对多个筛选器使用-notmatch,powershell,Powershell,使用搜索查找答案非常好,除非您不理解答案中的某些内容: 所以不允许你要求澄清,所以你必须发布另一个帖子;对那些寻找答案的人来说不是很有帮助 但是,在一个与我的问题相关的线程中发现了这一点,它似乎确实起了作用。但是,我想不出两件事: $items = Get-ChildItem $parentPath -Recurse -Exclude $exclude | ?{ $_.fullname -notmatch "\\obj\\?" } 1:为什么要使用“\xxxx\?”和 2:有没有一种方法可以让

使用搜索查找答案非常好,除非您不理解答案中的某些内容:

所以不允许你要求澄清,所以你必须发布另一个帖子;对那些寻找答案的人来说不是很有帮助

但是,在一个与我的问题相关的线程中发现了这一点,它似乎确实起了作用。但是,我想不出两件事:

$items = Get-ChildItem $parentPath -Recurse -Exclude $exclude | ?{ $_.fullname -notmatch "\\obj\\?" }
1:为什么要使用“\xxxx\?”和 2:有没有一种方法可以让数组或列表中的内容不匹配

感谢您的帮助。

1)说明:

   \\ litteral character '\'
   \  author missed another '\' to escape
   \? Litteral character ?


图案必须是
\\obj\\\?如果要匹配literal“?”或\\obj(?:\)?
如果要使用literal\optionaly

则-match和-notmatch运算符将只接受单个正则表达式参数,但可以在正则表达式中使用alternation来匹配同一操作中的多个条件:

$items = Get-ChildItem $parentPath -Recurse -Exclude $exclude |
 ?{ $_.fullname -notmatch "\\(?:obj|bin)\\?" }

+1,使用数组可以扩展选项:$alterarray=$array-join'|';您也可以这样做,但最好先通过[regex]:escape()运行它们,否则可能会出现一些意外的结果。因此,简短的回答是,参数-match和-notmatch,正如您所说,必须是正则表达式?这很难,因为我要排除的列表很长:$ExcludeDirs=(“临时ASP.NET文件”、“临时Internet文件”、“临时文件”、“临时文件”、“回收站”、“系统卷信息”、“回收器”),那么最好的方法是什么呢?我试图使用:$ExcludeDirs=(“临时ASP.NET文件”、“临时Internet文件”、“临时文件”、“临时文件”、“$RECYCLE.BIN”、“系统卷信息”、“回收器”),但由于某些原因,该操作失败。谢谢
$items = Get-ChildItem $parentPath -Recurse -Exclude $exclude |
 ?{ $_.fullname -notmatch "\\(?:obj|bin)\\?" }