我试图解析网络共享,脚本总是停在特定文件夹的中间,并抛出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变量。不过我个人更喜欢这个。