[英]PowerShell get-childitem refusal to exclude directory
我试图简单地搜索网络共享中的文件,但排除一个无用的目录。 我知道get-childitem
有-exclude
选项。
但是,当我尝试运行命令get-childitem -recurse -exclude \\\\share\\folder\\excludeddir
,PowerShell 会忽略 -exclude 参数。 已经尝试了排除路径的任何和所有排列。
为什么 powershell 忽略 -exclude 参数? 有什么方法可以简单地排除目录而不必编写多行代码? 不,管道的方法| ? { $_.FullName -inotmatch 'excludeddir' }
| ? { $_.FullName -inotmatch 'excludeddir' }
| ? { $_.FullName -inotmatch 'excludeddir' }
不可用,因为如果在网络共享中使用它,powershell 会完全忽略它。
如果您想排除名为Desktop
的文件夹中的所有文件,您可以执行以下操作。
Get-ChildItem -Recurse -File | Where {
$_.Directory.Name -ne 'Desktop'
} | Select-String -Pattern 'mystring'
解释:
-Exclude
的问题在于它仅适用于当前项目路径的叶项目。 在线文档未能解释-Exclude
工作原理及其特性。 所以,如果你排除Desktop
,命名为任何文件Desktop
或文件夹路径,与一个文件夹名为两端Desktop
将被排除在外。 但是,当使用-Recurse
时,它不会排除排除目录的任何子文件夹或子文件。 我不知道这是设计还是疏忽。
如果您仅搜索文件,则-File
参数仅返回文件。 由于FileInfo
对象具有Directory
属性,该属性是DirectoryInfo
对象,因此您可以引用其Name
属性来确定返回文件的父目录名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.