UnauthorizedAccessException - EnumerateFiles用于解析网络共享

时间:2014-11-11 11:57:21

标签: powershell

我尝试解析网络共享,并且脚本总是在中间停止使用特定文件夹并抛出UnauthorizedAccessException。如何跳过此文件夹并继续脚本?

以下代码不起作用(即使使用GetFiles),如果您知道答案,请为我提供Powershell代码而不是C#代码的解决方案(因为我不太了解C#)。

  $files = [system.IO.Directory]::EnumerateFiles($path, "*",[system.IO.SearchOption]::AllDirectories)

    foreach ($file in $files)
    {
        try
        {
            [System.IO.Path]::GetExtension($file)
        }
        catch [UnauthorizedAccessException]
        {
        }
    }

1 个答案:

答案 0 :(得分:1)

试试这个:

$path = ""
try
{
foreach ($file in ([system.IO.Directory]::EnumerateFiles($path, "*",[system.IO.SearchOption]::AllDirectories)))
{
    try
    {
        [System.IO.Path]::GetExtension($file)
    }
    catch [Exception]
    {
    }
}
}
catch [Exception]
{}

我相信你遇到的问题是你的$ files变量是文件被枚举的地方,因此它在try语句之外并且给你错误。此脚本在foreach语句本身内枚举时添加了另一个尝试并在foreach之外捕获以捕获异常。你可以这样做或只是在try块中声明$ files变量。我个人更喜欢这个。