我需要获取符合特定条件的隐藏和可见目录,并且我想在同一个调用中执行此操作,而不是重复搜索隐藏和可见项目.显然GetChildItem,使用-Attribute或-Hidden参数是不可能的.
我无法让-Attribute参数按照我想要的方式工作:
Get-ChildItem -Recurse -Directory -Attributes Hidden+!Hidden -Path $this.searchPath | ForEach-Object {
if ($_.Name -eq $targetFeatureToSearch)
{
$result.Add([IO.Directory]::GetParent($_.FullName).FullName);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用-Hidden,搜索中只包含隐藏的项目.如果未使用,则搜索中仅包含可见项.
Get-ChildItem -Recurse -Directory -Path $this.searchPath | ForEach-Object {
if ($_.Name -eq $targetFeatureToSearch)
{
$result.Add([IO.Directory]::GetParent($_.FullName).FullName);
}
}
Run Code Online (Sandbox Code Playgroud)
出于性能原因,有没有办法将两种搜索结合起来?
如果你想Get-ChildItem向你展示可见和隐藏的项目,你必须-Force像@LotPings评论一样.
但如果你想做任何事情for performance reasons?,Get-ChildItem可能不是一个好方法.
robocopy $this.searchPath $this.searchPath /E /L /FP /NS /NC /NJH /NJS
Run Code Online (Sandbox Code Playgroud)
将很快地以文本的形式吐出全名列表.选项意味着:
它确实包括隐藏的东西.
[编辑:TheIncorrigible1注释$this是类方法的自动变量,用于引用当前实例,如果您在PowerShell函数中使用它,这是一种不好的做法.我不会编辑上面的代码,如果你真的在一个方法中使用它,所以我的代码看起来像你的.]
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |