加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 是否可以列出我无权访问的所有权限

发布时间:2020-12-13 23:53:02 所属栏目:Windows 来源:网络整理
导读:我正在寻找一种方法来递归遍历我的整个文件共享(相当大的3TB文件)并列出我无法访问的所有文件/文件夹.由于迁移和大路径上的一些错误(超过255个字符),我们发现一些文件夹/文件已丢失所有权限,并且需要一种方法来查找所有权限.目前,作为域管理员用户,我无法列
我正在寻找一种方法来递归遍历我的整个文件共享(相当大的3TB文件)并列出我无法访问的所有文件/文件夹.由于迁移和大路径上的一些错误(超过255个字符),我们发现一些文件夹/文件已丢失所有权限,并且需要一种方法来查找所有权限.目前,作为域管理员用户,我无法列出权限或所有者.我可以控制它,并重置权限,但我有很多文件/文件夹我想将其输出到CSV文件或其他东西.

我尝试过以下方法:

get-childitem ",filesharef$folderetc" -recurse | get-acl

这似乎工作得很好,它给了我存在的所有文件/文件夹的ACL,并对它们有适当的权限.
但是一旦它命中了我无法访问的文件夹,我会收到以下错误:

Get-Acl : Attempted to perform an unauthorized operation.
At line:1 char:133
+ get-childitem ",filesharef$folderetc" -re
curse | get-acl <<<<
    + CategoryInfo          : NotSpecified: (:) [Get-Acl],UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetAclCommand

这些是我想要记录到CSV / TXT文件的错误,并忽略所有其他权限,如果每个错误方式也可以输出更多的一行,那将是理想的.

只是想知道是否有人有想法或暗示我应该如何进行?

(请注意上面的路径中有逗号用于不解析真实路径

,filesharef$folderetc)

谢谢!

将cmdlet特定错误捕获到文件的更简单且更少混淆的方法是使用-Errorvariable参数.它内置于大多数cmdlet中.查看$Error变量是不可靠的,因为它是一个全局变量,并且很有可能被powershell过程中的其他未减轻的错误所污染.

下面的代码将在2个日志文件中记录错误.

> gci_errors.csv – 包含枚举文件夹的错误
> gacl_errors.csv – 包含枚举特定文件/文件夹上的ACL的错误.

Get-ChildItem C:Temp -Recurse -ErrorAction SilentlyContinue -ErrorVariable gci_errors | ForEach-Object {

    $_ | Get-Acl -ErrorAction SilentlyContinue -ErrorVariable gacl_errors
}

$gci_errors | Select-Object -ExpandProperty CategoryInfo | Export-Csv -NoTypeInformation -Path C:Tempgci_errors.csv 
$gacl_errors | Select-Object -ExpandProperty CategoryInfo | Export-Csv -NoTypeInformation -Path C:Tempgacl_errors.csv

我已根据您的要求将输出更改为CSV文件.它更有意义,因为它更容易分析和导入以在数据上运行命令. CSV有一个名为Target的colum标头,它反映了导致问题的文件夹路径.您可以编写一个cmdlet,即Fix-DirPerms和管道.就像是:

Import-CSV -Path c:Tempgci_errors.csv | Fix-DirPerms

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读