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 – 包含枚举文件夹的错误 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读