/ / UnauthorizedAccessException - EnumerateFiles na analýzu zdieľania siete - powershell

UnauthorizedAccessException - EnumerateFiles pre analýzu zdieľania siete - powershell

Pokúsim sa analyzovať zdieľanie siete a skript sa vždy zastaví v strede s konkrétnou zložkou a hodí UnauthorizedAccessException. Ako preskočiť tento priečinok a pokračovať v skripte?

Nasledujúci kód nefunguje (aj s GetFiles), ak poznáte odpoveď, prosím, môžete mi poskytnúť riešenie v Powershell kód, a nie C # kód (pretože ja neviem dobre C #).

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

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

odpovede:

1 pre odpoveď č. 1

Skúste to:

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

Verím, že problém, ktorý ste mali, je vo vašomV premennej súbory $ sú súbory, ktoré boli vyčíslené, a preto boli mimo príkazu try a poskytli vám chybu. Tento skript pridáva ďalšiu skúšku a chytiť sa mimo foreach, aby zachytával výnimky, zatiaľ čo vyčíslil v samotnom vyhlásení. Môžete to urobiť, alebo len deklarovať premennú $ files v bloku try. Osobne sa mi to páči lepšie.