UnauthorizedAccessException-枚举文件以分析网络共享



我试图解析网络共享,脚本总是停在特定文件夹的中间,并抛出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]
        {
        }
    }

试试这个:

$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之外添加另一个try-and-catch,以在foreach语句本身内枚举时捕获异常。您可以这样做,也可以在try块中声明$files变量。不过我个人更喜欢这个。

最新更新