Get-Acl - Ignorer les dossiers sans autorisations

0

J'essaie de trouver un moyen d'identifier les dossiers auxquels je n'ai pas accès. J'ai trouvé cette commande, qui rapporte de manière récursive les autorisations de chaque dossier de l'arborescence de dossiers:

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

Cependant, il reste bloqué sur un dossier pour lequel je n'ai pas les autorisations, renvoyant cette erreur:

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

Je sais que cela est dû au fait que l'utilisateur ne dispose pas d'autorisations sur ce dossier particulier. Le problème est que le rapport s'arrête là, quels que soient les autres dossiers possibles.

En fin de compte, ce sont ces dossiers qui m'intéressent - afin de pouvoir identifier les dossiers qui doivent vérifier leurs autorisations. Donc, y a-t-il un moyen que je puisse obtenir cette commande pour simplement enregistrer "l'accès non autorisé", puis continuer?

Ben
la source

Réponses:

1

En fonction de votre affichage actuel de la sortie (dans la console), pour que votre code continue à fonctionner après une exception, vous devez envelopper votre Get-Acl dans un objet ForEach (alias Alias% ci-dessous} au lieu de le diriger directement). à Get-Acl

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

et vous verrez en rouge des erreurs comme:

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

Je n’appellerais pas cela un "rapport" en tant que tel, mais techniquement, c’est la réponse à la question que vous posez. J'espère que cela vous aidera à aller plus loin dans votre projet!

À votre santé :)

Ricc Babbitt
la source