Get-Acl - пропускайте папки без дозволів


0

Я намагаюся знайти спосіб визначити папки, до яких я не маю доступу. Я знайшов цю команду, яка рекурсивно повідомляє про дозволи кожної папки у дереві папок:

dir -recurse | where { $_.PSIsContainer -eq "TRUE" } | get-acl

Однак він застрягає у папці, на яку я не маю дозволів, повертаючи цю помилку:

get-acl : Attempted to perform an unauthorized operation.
At line:1 char:56
+ dir -recurse | where { $_.PSIsContainer -eq "TRUE" } | get-acl
+                                                        ~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Get-Acl], UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetAclCommand

Я знаю, що це пов’язано з тим, що користувач не має дозволів на цю конкретну папку. Проблема полягає в тому, що звіт там зупиняється, незалежно від того, які там інші папки можуть бути.

Зрештою, саме ці папки мене цікавлять - щоб я міг визначити, які папки потребують перегляду їх дозволів. Так чи є спосіб отримати цю команду просто увійти до "несанкціонованого доступу", а потім продовжувати?

Відповіді:


1

Виходячи з того, як ви переглядаєте вихідний результат в даний момент (на консолі), для того, щоб ваш код продовжувався після внесення винятку, потрібно загортати ваш Get-Acl в об'єкт ForEach (званий псевдонімом як% внизу), а не в трубопроводі безпосередньо до Get-Acl

dir -recurse | where { $_.PSIsContainer -eq "TRUE"} | %{get-acl $_.FullName}

і ви побачите червоним кольором помилки типу:

dir : Access to the path 'C:\folder\subfolder' is denied.

Я б не називав це "звітом", але, технічно кажучи, це відповідь на запитання, яке ви задаєте. Сподіваємось, це допоможе вам просунутися далі у ваших починаннях!

Ура :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.