首页 > 解决方案 > Powershell 无法完全匹配文件夹全名

问题描述

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

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

输出: 在此处输入图像描述

预期结果:

只有文件夹名称完全匹配“备份”才会出现在结果中,备份 2 不应该出现在结果中。

似乎 match 参数的行为类似于 'backup*',尝试了其他比较运算符,例如 -ceq、-eq、-like、-contains 等,但它们都没有按预期工作,它们中的大多数根本不返回任何结果。我应该使用什么比较运算符,或者这个问题有其他解决方案吗?

标签: powershellcomparison-operatorsget-childitem

解决方案


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

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

推荐阅读