繁体   English   中英

PowerShell get-childitem 拒绝排除目录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM