我尝试解析网络共享,并且脚本总是在中间停止使用特定文件夹并抛出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]
{
}
}
答案 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变量。我个人更喜欢这个。