Powershell 无法精确匹配文件夹全名

Powershell unable to exact match folder full name

我有一个脚本可以使用 powershell get-childitem 命令获取文件夹中的所有文件。我正在使用带有匹配参数的管道来过滤文件名,如下所示:

Get-ChildItem -Path \path\*  -recurse | Where-Object {$_.FullName -match 'backup'} 

输出:

期望结果:

Only folder name exact match 'backup' will be in result, backup 2 should be not in the result.

看起来 match 参数的行为相似 'backup*',尝试了其他比较运算符,例如 -ceq、-eq、-like、-contains 等,但 none 它们按预期工作,其中大多数 return 根本没有结果。我应该使用什么比较运算符或者是否有其他解决此问题的方法?

-match 使用正则表达式并检查字符串是否包含它(确实像 '*backup*' )。 但是,您从 $_.fullname 获得的字符串使用 \ 来分隔文件夹。所以我们可以检查 '\backup\'。但是由于 -match 使用正则表达式,我们需要使用 \:

转义 \
...| Where-Object {$_.FullName -match '\backup\'} 

您必须使用 $_.Name

执行此操作
Get-ChildItem -Path "\path\"  -recurse | Where-Object {$_.Name -eq 'backup'}

-eq 运算符匹配准确的文件名。

如果它是您要匹配的直接父文件夹,您可以这样做:

... | Where-Object {$_.Parent.Name -eq 'backup'}