2017-03-22 78 views
1

我想递归地从包含多个子文件夹的文件夹中获取文件。我注意到Windows XP在该文件夹中创建了这个5b .... cb \ amd64文件,并且它一直抛出访问被拒绝的错误。在PowerShell中忽略Get-childItem的目录

Get-ChildItem:对路径的访问被拒绝。

我没有管理员权限在这些机器上,我想要做的就是跳过这些文件夹。

有没有办法做到这一点?这是我尝试过的没有成功的。禁止这些消息是否是一个好主意,因为它不会破坏脚本?任何帮助将不胜感激。

Get-ChildItem $sourceDir -Recurse | ? { $_.FullName -notlike '*\5b...cb\*'} 
| Where-Object {$_.CreationTime.Date -eq ((Get-Date).Date)} | 
foreach { 
    Write-Host $_ 
} 
+6

'GET-ChildItem $ sourceDir -Recurse -ErrorAction SilentlyContinue'? –

+2

你将要遇到的问题是'-exclude'只能在叶级别工作,所以在使用'-recurse'时排除目录的子项目是没有用的。访问被拒绝的错误是一个自然的过滤器,Mathias建议你忽略这些错误是一个好主意。 – BenH

+0

听起来不错。感谢您的帮助。 – NepCoder

回答

4

你看到的是由Get-ChildItem引发的错误,所以试图进一步过滤无法访问的文件下来的管道也无济于事。您需要抑制使用ErrorAction common parameter原来的错误:

Get-ChildItem $sourceDir -Recurse -ErrorAction SilentlyContinue | ...