PowerShell - Get-ChildItem不排除目录

时间:2015-01-29 18:27:58

标签: powershell

当递归搜索特定目录时,Get-ChildItem将从根目录开始搜索。我不想搜索C:\Windows目录。我想将搜索范围限制在C:\Docs目录 这是我正在运行的:

PS> Get-ChildItem -path “C:\docs” -Filter "*crypt*" -recurse -ErrorAction Stop
Get-ChildItem : Access to the path 'C:\Windows\CSC' is denied.
At line:1 char:1
+ Get-ChildItem -path “C:\docs” -Filter "*crypt*" -recurse -ErrorAction ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (C:\Windows\CSC:String) [Get-ChildItem], UnauthorizedAccessException
    + FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand

PS> Get-ChildItem -path “C:\docs” -Filter "*crypt*" -exclude "C:\windows" -recurse -ErrorAction Stop
Get-ChildItem : Access to the path 'C:\Windows\CSC' is denied.
At line:1 char:1
+ Get-ChildItem -path “C:\docs” -Filter "*crypt*" -exclude "C:\windows" ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (C:\Windows\CSC:String) [Get-ChildItem], UnauthorizedAccessException
    + FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand  

编辑:TL; DR:用户错误。我没有C:\ Docs目录。

我正在编辑这个在多个服务器上运行的脚本。我在笔记本电脑上测试它。一旦找不到起始路径,我仍然不明白为什么它会查看文件系统的其余部分。

1 个答案:

答案 0 :(得分:3)

看起来(我还没有足够的搜索)这可能是Get-ChildItem中的错误;如果您将不存在的路径传递给-path参数,它将从该驱动器的根目录(至少对于本地驱动器)进行搜索。

在调用Get-ChildItem之前,请测试路径是否存在,您可以避免这种情况。

$mypath = "c:\docs";
if (test-path -path $mypath) {
    Get-childitem –path $mypath –filter “*crypt*" -recurse -ErrorAction stop;
} else {
    Write-Warning "$mypath not found";
}