我们有各种共享许多目录的服务器。很容易看到共享浏览器以查看“顶级”共享的内容,但下面是混乱的自定义权限,其中没有一个是记录的。
我想列举域中的所有共享(绝对是所有“服务器”,本地PC都很好)然后递减每一个并报告与父项的任何偏差。如果孩子具有相同的权限,则无需向后报告。
我更喜欢编写一个大型C#应用程序的简单脚本解决方案,但任何有效的方法都可以(甚至现有的软件)。
例如,我想得到:
SERVER1\
\-- C: (EVERYONE: Total control, ADMINs, etc. etc.)
\-- (skip anything that is not the same as above)
\-- SuperSecretStuff (Everyone: NO access; Bob: Read access)
SERVER2\
\-- Stuff (some people)
等
答案 0 :(得分:1)
我知道它不是脚本,但您尝试过ShareEnum吗? http://technet.microsoft.com/en-us/sysinternals/bb897442.aspx然后将其导出?您还可以与较旧的运行进行比较。我不认为有一个cmd行接口(很糟糕),但它会为你提供所需的信息
答案 1 :(得分:1)
This Powershell script完成了您的目标。
如上所述:
这个小脚本将枚举计算机上的所有共享,并列出每个共享的共享级别权限。它使用WMI检索共享,并列出权限。
请注意,此脚本列出了共享级权限,而不是NTFS权限。
它接受许多计算机作为输入,单个IP或在本地系统中运行它:
.EXAMPLE
C:\PS> .\Get-SharePermissions # Operates against local computer.
.EXAMPLE
C:\PS> 'computerName' | .\Get-SharePermissions
.EXAMPLE
C:\PS> Get-Content 'computerlist.txt' | .\Get-SharePermissions | Out-File 'SharePermissions.txt'