Get-Acl-跳过没有权限的文件夹

Get-Acl-跳过没有权限的文件夹

我正在尝试找到一种方法来识别我无权访问的文件夹。我找到了这个命令,它以递归方式报告文件夹树中每个文件夹的权限:

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-Object 中(别名为 % ),而不是直接通过管道传输到 Get-Acl

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

您将会看到红色的错误,例如:

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

我不会将其称为“报告”,但从技术上讲,这就是你所提问题的答案。希望这能帮助你在努力中取得更大进步!

干杯 :)

相关内容